2014-04-30 138 views
1

如何将使用project(':api')引用的子项目添加到jar gradle构建中?我的主要项目是build.gradle。子项目包含git子模块,并具有类似的构建脚本。将子项目添加到gradle jar

apply plugin: 'java' 

sourceCompatibility = 1.5 
version = '1.0' 

jar { 
    manifest { 
     attributes('Main-Class': '..........') 
    } 
} 

repositories { 
    mavenCentral() 
} 

dependencies { 
    compile files('libs/jfxrt.jar') 
    compile project(':api') 
    testCompile group: 'junit', name: 'junit', version: '4.11' 
} 
+0

见'多项目在builds'章[Gradle用户指南](http://gradle.org/docs/current/userguide/userguide_single.html)以及完整Gradle发行版中的示例。 –

+0

我试过了,但我无法获得添加到主jar的子项目的类路径。 – MeinAccount

+0

因此,构建已经成功,你的问题是如何创建一个脂肪罐? –

回答

2

我想出了我自己的想法。

包含子项目的主罐子来源:

sourceSets { 
    main { 
     java { 
      srcDir project(':api').file('src/main/java') 
     } 
    } 
} 

包括一个罐子在主罐子类:

jar { 
    from zipTree('libs/abc.jar') 
} 
2

尝试将类路径添加到您的清单文件。你需要有目录(下面的例子使用“lib”)来保存你的项目所依赖的jar文件。

尝试在gradle build中修改你的“jar”块来做到这一点。我有一些附加属性只是为了演示。但重要的是类路径

jar { 
    manifest.attributes(
     'Class-Path': lib/api.jar 
     'Built-By': System.getProperty('user.name'), 
     'Built-JDK': System.getProperty('java.version'), 
     'Built-OS': System.getProperty('os.name'), 
     'Built-DATE': buildDate, 
    ) 
} 

我希望它有助于解决您的问题。

+0

这不是我正在寻找的。我希望子项目的源代码在主jar中包含**,以便构建包含两个项目**的**类的jar。 – MeinAccount

0

在最简单的情况下,脂肪罐可以如下创建:

主/的build.gradle:

jar { 
    from configurations.runtime 
} 

还有其它更强大的解决方案,如gradle-one-jar插件“主要“方法式应用程序。