在Gradle中,是否有“正确的方式”来产生瘦弱的战争和耳钉

如何解决在Gradle中,是否有“正确的方式”来产生瘦弱的战争和耳钉

|| 我想使用Gradle(显然是Java)来进行一场瘦小的战争(战争中没有依赖罐),并将所有依赖项包含在ear文件中。我已经进行了一些挖掘,但是找不到Gradle的任何明显的“瘦身战争”教程。 在Maven 2.2.1中(是的,我们陷在2.2.1中,不要问我为什么),这是通过创建一个单独的ear项目并在耳朵中重复我所有与子项目的依赖关系来实现的。 我可以想象如何在Gradle中复制相同的hack,但是我希望有一种更聪明的方式来做到这一点。有没有人有任何想法/示例/建议?     

解决方法

        gradle的最新1.0-M4快照包含新的Ear插件。您可以更新包装器配置,也可以直接从下载快照 http://repo.gradle.org/gradle/distributions/gradle-snapshots/gradle-1.0-milestone-4-20110610162713+0200-bin.zip 可从http://repo.gradle.org/gradle/distributions/gradle-snapshots/gradle-1.0-milestone-4-20110610162713+0200-all.zip下载此快照的完整发行版,其中包含一个示例文件夹,其中包含两个示例用法新推出的耳塞。 看一下samples / ear / earWithWar中的示例此示例定义了带有战争的耳朵。 要进行一场枯燥的战争,您必须修改war项目的build.gradle。要在没有第三方库的情况下进行战争,您必须将以下代码段添加到sample / ear / earWithWar / war / build.gradle:
war{
    classpath = []
}
为了在您的耳朵的lib /子文件夹中获得第三方库,您还必须将war插件使用的库也添加到根项目的earlib配置中。该示例对log4j库执行此操作。 现在,在示例项目上运行\“ gradle ear \”,创建了一场枯燥的战争,并且第三方libs存储在ear的lib /子文件夹中。 完整的快照在docs /子文件夹中包含有关耳插件的更多文档     ,        Rene建议您将ѭ1设置为1可以防止所有内容被包含-最终存档中甚至不包含
WEB-INF/classes
。我知道从war文件的
WEB-INF/lib
目录中排除依赖项,但仍包括
WEB-INF/classes
的唯一方法是使用providerCompile和/或providerRuntime配置。例如
dependencies {
    providedCompile fileTree(dir: \'lib\',include: \'**/*.jar\')
}
    ,        我将尝试着手进行快照构建,但是为了完整起见,这是自昨天以来我如何一起砍弄东西。请随时改善我的Gradle / Groovy。我敢肯定它没有它应该的优雅。
//Make sure the war and jars get built first
task (\'ear\',type:Jar,dependsOn: \":myWarProject:assemble\" ){
    //This needs to be in the config block,or Gradle skips the task,assuming the file list for the jar/ear is empty...
    from{ \"ear/src/main/application\" }
}

ear.doFirst{
    //Set up the ear file name
    baseName = \"myapp-\" + rootVersion
    extension = \"ear\"

    //Gather up the jars required by all of the subprojects
    def allSubprojectDependencies = getAllProjectDependencies([
        \"subproject1\",\"subproject2\",\"subproject3\",\"subproject4\",\"subproject5\"
    ])
    from { allSubprojectDependencies }

    //grab the assembled war file
    from {
        subprojects.find{ it.name==\"myWarFile\" }.war.archivePath
    }

    //Other stuff required for our ear,such as security or eventing EJBs
    //Make sure you apply your \"repositories\" block to your root/ear project or \"allProjects\" if you do this...
    from { configurations.earConfig.files }

    //Create the classpath manifest
    manifestClassPath = allSubprojectDependencies.collect { it.name }.sort().join(\' \')
    manifest { attributes( \"Class-Path\": manifestClassPath ) }
}

def getAllProjectDependencies (def projectNames){
    def allDependencies = []as Set
    projectNames.each{ projectName ->
        def subProject = subprojects.find{ subProject ->
            subProject.name.equals(projectName)
        }
        def subProjectDependencies = subProject.configurations.compile.files
        allDependencies.addAll subProjectDependencies
    }
    return allDependencies.unique{ a,b->
        if (a.equals(b)){
            return 0
        }
        return -1
    }
}
(请注意,所有的罐子都是故意放在耳朵根部的。不要问我为什么,但是有些人显然喜欢这种方式。)     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?