如何使用不同参数运行Gradle任务 [英] How to run a Gradle task with different parameters

查看:251
本文介绍了如何使用不同参数运行Gradle任务的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在运行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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆