我想在gradle中定义一个任务(称为gen),该任务运行gradle任务,jar但具有的固定值baseName。我也希望jar以后可以使用原始任务。
gen
jar
baseName
我的问题是,我无法转移清单的设置。
我累了
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 } } }
我以为我要Jar通过对archiveName和manifest使用其他值来重新定义任务。
Jar
运行时./gradlew jar会生成一个可执行的JAR文件。
./gradlew jar
运行时./gradlew gen会生成一个jar文件。不幸的是,当尝试使用java -jar build/libs/something.jar我运行程序时,出现错误消息:
./gradlew gen
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任务本身,而是运行别名)。我编写的代码在做什么(运行任务时没有出现错误。但是它在做什么?)
我认为您doFirst的发电任务不需要。您需要添加一个with jar以包含所有常规jar内容,结果是:
doFirst
with jar
task gen (type: Jar) { description "Generates JAR without version number." archiveName = filename + ".jar" manifest {attributes 'Main-Class': mainFile} with jar }