2015-06-01 33 views
0

請注意:儘管這個問題特別提到Bamboo CIGradle ShadowJar插件,我相信這是在心臟基本的搖籃配置問題,並相信它可以通過任何回答戰鬥疲憊的Gradle Guru。如何強制與搖籃神器/模塊的名稱建立

我有一個內建搖籃,其中build.gradle是一個Groovy應用:

apply plugin: 'groovy' 
apply plugin: 'maven' 
apply plugin: 'application' 
apply plugin: 'com.github.johnrengelman.shadow' 
apply plugin: 'eclipse' 

sourceCompatibility = '1.8' 
targetCompatibility = '1.8' 

[compileJava, compileTestJava]*.options*.encoding = 'UTF-8' 

group = 'com.me.myapp' 

mainClassName = "com.me.myapp.MyAppDriver" 

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     classpath 'com.github.jengelman.gradle.plugins:shadow:1.2.0' 
    } 
} 

dependencies { 
    // Omitted for brevity 
} 

jar { 
    manifest { 
     attributes 'Main-Class': mainClassName 
    } 
} 

repositories { 
    mavenLocal() 
    mavenCentral() 
} 

shadowJar { 
    classifier = '' 
    mergeServiceFiles { 
     exclude 'META-INF/*.DSA' 
     exclude 'META-INF/*.RSA' 
    } 
} 

artifacts { 
    archives(file("${buildDir}/libs/myapp-${version}.jar")) { 
     name "myapp" 
     classifier "" 
     builtBy shadowJar 
    } 
} 

task wrapper(type: Wrapper) { 
    gradleVersion = '2.3' 
} 

在哪裏gradle.properties是:

group=com.me.myapp 
version=1.0.0 

正如你所看到的,我使用ShadowJar生產一個獨立的「胖JAR」爲我的應用程序。當我在本地機器上運行gradle clean build shadowJar時,Gradle生成build/libs/myapp-1.0.0.jar工件/檔案。然而,當這個相同的命令是從我們的CI服務器(竹)跑了,搖籃產生build/libs/MYAPP-KEY-1.0.0.jar神器/檔案文件,其中MYAPP-KEY是竹「建立主要」(實際上是一個獨特的鍵/標籤識別服務器上的版本) 。如果你對我所說的話毫無頭緒,我認爲這並不重要。什麼重要的是要知道的是,Bamboo將檢出myapp的源代碼到文件夾,在CI服務器上命名爲MYAPP-KEY。所以本地myapp/是我的項目的根,但在CI MYAPP-KEY是我的項目的根。

主要的一點是,我沒有明確界定在我的搖籃配置東西,所以它似乎搖籃使用項目的根的名字產生內置JAR的名稱。 這是什麼「東西」以及我在哪裏定義它?預期的最終目標是在本地和CI上生成build/libs/myapp-1.0.0.jar

回答