2014-12-05 52 views
3

我想創建一個exe文件,而不必將所有必需的庫放在exe旁邊。 以前用螞蟻我創建了一個獨立的jar文件與一個jar,然後用launch4j將其包裝到一個exe文件。Gradle:如何使用單罐輸出作爲launch4j的輸入

Gradle的插件既可以獨立工作,也可以獨立工作,幾乎不需要任何配置。

但是,我怎樣才能設法使用創建的one-jar作爲launch4j的輸入?

這是我目前構建文件:

apply plugin: 'java' 
apply plugin: 'launch4j' 
apply plugin: 'gradle-one-jar' 

buildscript { 
    repositories { 
     mavenCentral() 
    } 

    dependencies { 
     classpath 'edu.sc.seis.gradle:launch4j:1.0.6' 
     classpath 'com.github.rholder:gradle-one-jar:1.0.4' 
    } 
} 

launch4j { 
    mainClassName = "de.my.umkopierer.Umkopierer" 
    launch4jCmd = "C:/Program Files (x86)/Launch4j/launch4j" 
    jar = "lib/Umkopierer-1.0.jar" 
    headerType = "console" 
    dontWrapJar = false 
} 

sourceCompatibility = 1.7 
version = '1.0' 

jar { 
    manifest { 
     attributes 'Implementation-Title': 'Umkopierer', 'Implementation-Version': version 
    } 
} 

repositories { 
    mavenCentral() 
} 

dependencies { 
    compile group: 'commons-collections', name: 'commons-collections', version: '3.2' 
    compile 'com.google.guava:guava:18.0'  
    compile 'com.fasterxml.jackson.core:jackson-core:2.4.4' 
    compile 'com.fasterxml.jackson.datatype:jackson-datatype-jdk7:2.4.4' 
    compile 'com.fasterxml.jackson.core:jackson-databind:2.4.4' 


    testCompile group: 'junit', name: 'junit', version: '4.+' 
} 

task oneJar(type: OneJar) { 
    mainClass = "de.stiffi.umkopierer.Umkopierer" 
} 

回答

1

我解決了這個通過使launch4j任務「createExe」依賴於onejar/fatjar(或任何其他脂肪的罐子創作方法)。例如: -

tasks.createExe.dependsOn('oneJar')  


task launch4j(overwrite: true, dependsOn: ['createExe']){ 
} 

此外,我認爲你的gradle這個構建文件應包含一個主類屬性一樣

manifest { 
    attributes 'Main-Class':'com.example.MyMainClass' 
} 

(至少這是,如果你使用的是fatjar gradle這個插件的情況下)。

相關問題