使用Gradle从webapp创建一个包含类和资源的JAR
我想用Gradle从WAR的内容中创建一个jar。 我想要的结果非常像maven-war-plugin的archiveClasses = true设置。
我明白,gradle war插件似乎没有这样做(按照这个stackoverflow问题)。
有没有办法做到这一点手动? 通过操作gradle jar任务来从WEB-INF文件夹中收集所需的部分?
当我使用默认的jar任务时,它不会从WEB-INF目录获取资源。
我想这样做的原因是因为我模块化了一个WAR,并且模块依赖于WAR中的公共资源(在我的情况下是FreeMarker文件)。 我希望能够根据从WAR创建的JAR来测试每个模块。
我知道我也可以创建一个拥有所有资源并且WAR和模块都依赖于此的“通用”jar,但根据maven-war-plugin创建WAR的JAR会更方便。
您可以添加它以在创建的jar文件的根目录中同时包含src / main / resources和scr / main / webapp:
sourceSets {
main {
resources {
srcDirs "src/main/resources", "src/main/webapp"
}
}
}
所以这里是我如何解决它(不知道这是最好的方式):
jar {
from ("${projectDir}/src/main/webapp/WEB-INF") {
include('freemarker/**')
}
}
我也在Gradle论坛上发现了这个选择,但是我无法获取resources.srcDir("src/main/webapp").exclude('images/')
来编译,但我真的很喜欢这个想法,到jar任务的默认资源目录。 编辑 :我想我上面的第一个例子是一样好。
上一篇: Create a JAR containing classes and resources from webapp using Gradle