使用Gradle从webapp创建包含类和资源的JAR

时间:2014-01-17 00:18:33

标签: java jar gradle war

我想使用gradle从WAR的内容创建一个jar。我想要的结果与archiveClasses = true setting of maven-war-plugin的结果非常相似。

据我所知,gradle war插件似乎没有这样做(根据this stackoverflow question)。

有没有办法手动执行此操作?比如说操纵gradle jar任务从WEB-INF文件夹中收集所需的部分吗?

当我只使用默认的jar任务时,它不会从WEB-INF目录中获取资源。

我想这样做的原因是因为我已经模块化了一个WAR,模块依赖于WAR中的公共资源(在我的例子中是FreeMarker文件)。我希望能够依赖于从WAR创建的JAR来测试每个模块。

我知道我也可以创建一个“普通”jar,它拥有所有资源并且WAR和模块都依赖于此,但是根据maven-war创建一个WAR的JAR会更方便-plugin。

2 个答案:

答案 0 :(得分:3)

所以这就是我如何解决它(不确定这是否是最佳方式):

jar {
    from ("${projectDir}/src/main/webapp/WEB-INF") {
        include('freemarker/**')
    }
}

我还在Gradle论坛中找到了this alternative,但我无法编译行resources.srcDir("src/main/webapp").exclude('images/'),但我真的很喜欢以某种方式添加到jar任务的默认资源目录。 修改:我认为我上面的第一个例子就像它一样好。

答案 1 :(得分:1)

您可以添加此项以在创建的jar文件的根目录中包含src / main / resources和scr / main / webapp:

sourceSets {
    main {
        resources {
            srcDirs "src/main/resources", "src/main/webapp"
        }
    }
}