Java 如何使用单个build.gradle创建两个单独的jar文件

Java 如何使用单个build.gradle创建两个单独的jar文件,java,gradle,Java,Gradle,我试图用一个build.gradle创建两个单独的jar文件 它几乎可以工作,但一个会覆盖另一个。正确的做法是什么 jar { //include contents of output dir from "$buildDir/classes/main" exclude '**/a1/**' archiveName "X1-1.0.0.jar" } jar { //include contents of output dir

我试图用一个build.gradle创建两个单独的jar文件

它几乎可以工作,但一个会覆盖另一个。正确的做法是什么

jar {
       //include contents of output dir
       from "$buildDir/classes/main"
       exclude '**/a1/**'
       archiveName "X1-1.0.0.jar"
}

jar {
       //include contents of output dir
       from "$buildDir/classes/main"
       exclude '**/a2/**'
       archiveName "X2-1.0.0.jar" 
}

谢谢

您需要使用两个Jar任务,而不是两次配置同一个Jar任务。假设您使用的是
java
插件,您可以重用该插件添加的名为
Jar
的Jar任务,并自己添加另一个:

// reconfigure the Java plugin's `jar` task
jar {
    exclude '**/a1/**'
    baseName = 'X1'
}

// need to configure this one from scratch
task x2jar(type: Jar) {
    // referring to the output in this way
    // allows Gradle to infer task dependencies automatically
    from sourceSets.main.output 

    exclude '**/a2/**'
    baseName = 'X2'
}

// one way to make `gradle build` run both Jar tasks
assemble.dependsOn(x2jar)

有关配置选项的详细信息,请参阅。

与两次配置同一个Jar任务不同,您需要使用两个Jar任务。假设您使用的是
java
插件,您可以重用该插件添加的名为
Jar
的Jar任务,并自己添加另一个:

// reconfigure the Java plugin's `jar` task
jar {
    exclude '**/a1/**'
    baseName = 'X1'
}

// need to configure this one from scratch
task x2jar(type: Jar) {
    // referring to the output in this way
    // allows Gradle to infer task dependencies automatically
    from sourceSets.main.output 

    exclude '**/a2/**'
    baseName = 'X2'
}

// one way to make `gradle build` run both Jar tasks
assemble.dependsOn(x2jar)

有关配置选项的详细信息,请参阅。

与两次配置同一个Jar任务不同,您需要使用两个Jar任务。假设您使用的是
java
插件,您可以重用该插件添加的名为
Jar
的Jar任务,并自己添加另一个:

// reconfigure the Java plugin's `jar` task
jar {
    exclude '**/a1/**'
    baseName = 'X1'
}

// need to configure this one from scratch
task x2jar(type: Jar) {
    // referring to the output in this way
    // allows Gradle to infer task dependencies automatically
    from sourceSets.main.output 

    exclude '**/a2/**'
    baseName = 'X2'
}

// one way to make `gradle build` run both Jar tasks
assemble.dependsOn(x2jar)

有关配置选项的详细信息,请参阅。

与两次配置同一个Jar任务不同,您需要使用两个Jar任务。假设您使用的是
java
插件,您可以重用该插件添加的名为
Jar
的Jar任务,并自己添加另一个:

// reconfigure the Java plugin's `jar` task
jar {
    exclude '**/a1/**'
    baseName = 'X1'
}

// need to configure this one from scratch
task x2jar(type: Jar) {
    // referring to the output in this way
    // allows Gradle to infer task dependencies automatically
    from sourceSets.main.output 

    exclude '**/a2/**'
    baseName = 'X2'
}

// one way to make `gradle build` run both Jar tasks
assemble.dependsOn(x2jar)

有关配置选项的详细信息,请参阅。

我尝试过。它没有创建X2.jar。我将行baseName='X2'更改为archiveName'X2.jar'。它也不起作用=(将assemble.dependsOn(x2jar)更改为jar.dependsOn(x2jar)。现在它工作了。谢谢!要么您没有运行
gradle build
,要么您有一个非标准的构建。
jar.dependsOn(x2jar)
有点像黑客,因为这两个任务实际上并不相互依赖。实际运行gradle build没有帮助。它只生成了一个空jar,0-Thu-Dec 05 07:07:34 MST 2013 META-INF/25-Thu-Dec 05 07:07:34 MST 2013 META-INF/MANIFEST.MF。我使用的gradle直接从www.gradle.org下载将assemble.dependsOn(x2jar)更改为jar.dependsOn(x2jar)。它与gradle build配合得很好。它生成了与我想要的内容完全相同的jar。我尝试了。它没有创建X2.jar。我将行baseName='X2'更改为archiveName'X2.jar'。=(将assemble.dependsOn(x2jar)更改为jar.dependsOn(x2jar)。现在它成功了。谢谢!要么你没有运行
gradle build
,要么你有一个非标准的build。
jar.dependsOn(x2jar)
有点像黑客,因为这两个任务实际上并不相互依赖。实际运行gradle build没有帮助。它只生成了一个空jar,0-Thu-Dec 05 07:07:34 MST 2013 META-INF/25-Thu-Dec 05 07:07:34 MST 2013 META-INF/MANIFEST.MF。我使用的gradle直接从www.gradle.org下载将assemble.dependsOn(x2jar)更改为jar.dependsOn(x2jar)。它与gradle build配合得很好。它生成了与我想要的内容完全相同的jar。我尝试了。它没有创建X2.jar。我将行baseName='X2'更改为archiveName'X2.jar'。=(将assemble.dependsOn(x2jar)更改为jar.dependsOn(x2jar)。现在它成功了。谢谢!要么你没有运行
gradle build
,要么你有一个非标准的build。
jar.dependsOn(x2jar)
有点像黑客,因为这两个任务实际上并不相互依赖。实际运行gradle build没有帮助。它只生成了一个空jar,0-Thu-Dec 05 07:07:34 MST 2013 META-INF/25-Thu-Dec 05 07:07:34 MST 2013 META-INF/MANIFEST.MF。我使用的gradle直接从www.gradle.org下载将assemble.dependsOn(x2jar)更改为jar.dependsOn(x2jar)。它与gradle build配合得很好。它生成了与我想要的内容完全相同的jar。我尝试了。它没有创建X2.jar。我将行baseName='X2'更改为archiveName'X2.jar'。=(将assemble.dependsOn(x2jar)更改为jar.dependsOn(x2jar)。现在它成功了。谢谢!要么你没有运行
gradle build
,要么你有一个非标准的build。
jar.dependsOn(x2jar)
有点像黑客,因为这两个任务实际上并不相互依赖。实际运行gradle build没有帮助。它只生成了一个空jar,0-Thu-Dec 05 07:07:34 MST 2013 META-INF/25-Thu-Dec 05 07:07:34 MST 2013 META-INF/MANIFEST.MF。我使用的gradle直接从www.gradle.org下载将assemble.dependsOn(x2jar)更改为jar.dependsOn(x2jar)。它与gradle build配合得很好。它生成了与我想要的内容完全相同的jar。