2014-04-30 166 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插件「主要「方法式應用程序。