我想在gradle中定义一个任务(名为gen
),该任务运行gradle任务jar
但具有baseName
的修正值。我还希望之后可以使用原始任务jar
。
我的问题是,我无法转移清单设置。
我累了。
def mainFile = 'com.so.proj.App'
def filename = 'something'
jar {
baseName filename
manifest {
attributes 'Main-Class': mainFile
}
}
task gen (type: Jar) {
description "Generates JAR without version number."
doFirst {
//archiveName = jar.baseName + "." + extension
archiveName = filename + ".jar"
manifest {
attributes 'Main-Class': mainFile
}
}
}
我以为我通过使用archiveName和manifest的其他值来重新定义Jar
任务。
运行./gradlew jar
时会生成可执行的JAR文件。
运行./gradlew gen
时会生成一个jar文件。不幸的是,当尝试使用java -jar build/libs/something.jar
运行程序时,我收到错误消息:
java -jar build / libs / something.jar
Error: Could not find or load main class com.so.proj.App
我做错了什么?我只想用不同的参数运行jar任务(不需要配置jar任务本身,而是运行别名)。我写的代码是做什么的(运行任务时我没有收到错误。但是它在做什么?)
答案 0 :(得分:2)
我认为你的生成任务中不需要doFirst
。您需要添加with jar
以包含所有常规jar内容,结果为:
task gen (type: Jar) {
description "Generates JAR without version number."
archiveName = filename + ".jar"
manifest {attributes 'Main-Class': mainFile}
with jar
}