Gradle: как использовать вывод с одной банкой в качестве входных данных для launch4j
Я хотел бы создать исполняемый файл, без необходимости помещать все необходимые библиотеки рядом с исполняемым файлом. Ранее с помощью ant я создал автономный файл jar с one-jar, а затем обернул его в исполняемый файл с помощью launch4j.
У Gradle есть как плагины для обоих, так и автономные, они работают очень хорошо, почти без конфигурации.
Но как мне использовать созданный одноразовый контейнер в качестве входа для 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 (или любого другого метода создания jar-файла). Например:
tasks.createExe.dependsOn('oneJar')
task launch4j(overwrite: true, dependsOn: ['createExe']){
}
Также я думаю, что ваш файл сборки Gradle должен содержать атрибут основного класса, такой как
manifest {
attributes 'Main-Class':'com.example.MyMainClass'
}
(по крайней мере, это тот случай, если вы используете плагин Fatjar Gradle).