如何使用不同参数

时间:2016-03-08 22:03:47

标签: java gradle jar build.gradle

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

1 个答案:

答案 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
}