有没有办法在Gradle中复制Maven attachClasses war插件功能?

时间:2014-08-27 19:55:12

标签: gradle

使用Maven,我们目前正在使用以下方法从WAR文件中分离出类:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>${maven-war-plugin.version}</version>
    <configuration>
        <packagingExcludes>WEB-INF/web.xml</packagingExcludes>
        <attachClasses>true</attachClasses>
        <filteringDeploymentDescriptors>true</filteringDeploymentDescriptors>
    </configuration>
</plugin>

是否可以在Gradle中复制此功能?目标是在主战争工件旁边只发布.jar中的类:

ghc-templates-2.29-javadoc.jar       14-Jan-2014 15:19  112.43 KB
ghc-templates-2.29-sources.jar       14-Jan-2014 15:19  12.81 KB
ghc-templates-2.29.war               14-Jan-2014 15:19  6.05 MB
ghc-templates-2.29-classes.jar       14-Jan-2014 15:19  23.95 KB

1 个答案:

答案 0 :(得分:3)

是的,只需运行jar任务。由于War插件应用了Java插件,因此您将获得所有常规任务,就像它是普通的Java项目一样。但是,在运行assemble时,默认情况下该任务不包含在依赖关系图中(请参阅grade docs)。要解决此问题,只需添加:

assemble {
    dependsOn jar
}

另外,根据上面的例子,如果你想在jar中添加一个自定义分类器,你可以这样做:

jar {
    classifier = 'classes'
}