2016-03-08 64 views
2

我想定义一个运行gradle任务jar但具有固定值为baseName的gradle中的任务(称为gen)。之后我也想让原始任务jar可用。如何使用不同参数运行Gradle任务

我的问题是,我无法传输清单的设置。

我累了,例如

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和清单其他值重新定义Jar任务。

当运行./gradlew jar时,会生成一个可执行的JAR文件。

当运行./gradlew gen时,会生成一个jar文件。不幸的是当试图运行使用java -jar build/libs/something.jar我得到错误信息的程序:

Java的罐子建立/库/ something.jar

Error: Could not find or load main class com.so.proj.App 

我在做什么错?我只是想用不同的参数运行jar任务(没有配置jar任务本身,但运行别名)。我写的代码在做什么(我在执行任务时没有遇到错误,但是它在做什么?)

+0

您可能需要只是Jar'加上'以你的任务根定义 – RaGe

回答

2

我认为你的gen任务中不需要doFirst。您需要添加一个with jar包括所有常规罐子的内容,这将导致:

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

你有没有为'with'的参考。我搜索了所有(?)文档页面的任务,但找不到任何东西。这在哪里记录? – Edward

+0

我相信'with'是'groovy'''''''''使用jar封口。但是我还没有找到一个很好的参考来解释这个令人满意的结果。 – RaGe

+1

在这给了'with()'不是一个Groovy方法,而是来自'Jar'类:http://stackoverflow.com/a/35948697 –

相关问题