小编典典

如何使用不同的参数运行Gradle任务

java

我想在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
        }
    }
}

我以为我要Jar通过对archiveName和manifest使用其他值来重新定义任务。

运行时./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任务本身,而是运行别名)。我编写的代码在做什么(运行任务时没有出现错误。但是它在做什么?)


阅读 242

收藏
2020-11-26

共1个答案

小编典典

我认为您doFirst的发电任务不需要。您需要添加一个with jar以包含所有常规jar内容,结果是:

task gen (type: Jar) {
    description "Generates JAR without version number."
    archiveName = filename + ".jar"
    manifest {attributes 'Main-Class': mainFile}
    with jar
}
2020-11-26