如何使用不同参数运行Gradle任务 [英] How to run a Gradle task with different parameters
问题描述
我想在运行gradle任务 jar
的gradle中定义一个任务(称为 gen
),但固定值为 baseName
。我还希望之后的原始任务 jar
可用。
我的问题是,我无法转移清单的设置。
我累了例如
def mainFile = 'com.so.proj.App'
def filename ='something'
jar {
baseName filename
manifest {
attributes'Main-Class ':mainFile
}
}
任务gen(类型:Jar){
描述生成没有版本号的JAR。
doFirst {
// archiveName = jar.baseName +。 +扩展名
archiveName =文件名+.jar
清单{
属性'Main-Class':mainFile
}
}
}
我以为我正在重新定义 Jar
任务archiveName和manifest的其他值。
当运行 ./ gradlew jar
时,会生成一个可执行的JAR文件。
运行 ./ gradlew gen
时会生成一个jar文件。不幸的是,当试图使用 java -jar build / libs / something.jar
运行程序时,我收到错误消息:
java -jar build / libs / something.jar
错误:无法找到或加载主类com.so.proj .App
我做错了什么?我只是想用不同的参数运行jar任务(没有配置jar任务本身,但运行别名)。我写的代码是什么(运行任务时我没有遇到错误,但是它在做什么?)
我认为你的gen任务中不需要 doFirst
。您需要添加与jar
来包含所有常规jar内容,这会导致:
task gen(type:Jar){
description生成没有版本号的JAR。
archiveName = filename +.jar
manifest {attributes'Main-Class':mainFile}
with jar
}
I'd like to define a task in gradle (called gen
) that runs the gradle task jar
but with a fix value for baseName
. I also want the original task jar
to be available afterwards.
My Problem is, that I can't transfer the setting for manifest.
I tired e.g.
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
}
}
}
I thought I'm redefining the Jar
task by using other values for archiveName and manifest.
When running ./gradlew jar
an executable JAR file is generated.
When running ./gradlew gen
a jar file is generated. Unfortunately when trying to run the program using java -jar build/libs/something.jar
I get the error message:
java -jar build/libs/something.jar
Error: Could not find or load main class com.so.proj.App
What am I doing wrong? I simply want to run the jar task with different parameters (without configuring the jar task itself, but running an alias). And what is the code doing that I wrote (I don't get an error when running the task. But what is it doing?)
I don't think you need doFirst
in your gen task. You need to add a with jar
to include all regular jar contents, which results in:
task gen (type: Jar) {
description "Generates JAR without version number."
archiveName = filename + ".jar"
manifest {attributes 'Main-Class': mainFile}
with jar
}
这篇关于如何使用不同参数运行Gradle任务的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!