当前位置: 首页 > 面试题库 >

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

白翔
2023-03-14
问题内容

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


问题答案:

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

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


 类似资料:
  • 我在build.gradle中创建了一个新的gradle任务: 哪个应该运行rerun.sh: 我使用IntelliJ作为IDE。如何运行此任务? 我尝试在zshell控制台中运行并收到此错误: gradle调用CL zsh:找不到命令:gradle 但是在 IDE 中,我一直使用 gradle,因此必须安装它。 我怎么才能解决这个问题?我的写作还好吗?

  • 我有一个java和groovy类,由gradle Task运行。我已经设法使它工作,但我不喜欢在命令行中传递参数的方式。下面是我当前通过命令行执行的方法: my build。gradle代码采用这些参数如下所示: 我想知道有没有一种方法可以更好地传递参数,比如: 以及如何在我的java类中使用它们。

  • 1.)在预定义数据库2中运行liquibase变更集。)对数据库3运行多个测试。)回滚使用前一个变更集所做的所有更改 每次测试时,我都希望数据库处于“干净”状态。它应该只有我期望的变化,没有其他。liquibase使用Gradle插件进行设置,并应用/更新变更集。但是,我不想手动调用该命令。这将是需要在持续集成中运行的东西,所以我需要编写脚本,让配置项调用一个任务,然后按顺序运行每个任务,直到结束

  • 问题内容: 我正在尝试设置gradle以启用各种spring配置文件来启动该过程。 我当前的配置如下: 我想通过任务设置系统属性,然后执行。 我的尝试看起来像这样: 几个问题: 是spring boot bootRun配置的一部分? 是否可以在另一个任务中设置系统属性? 我下一步应该做什么?我需要先进行配置 我还有其他方法可以研究吗 -埃里克 问题答案: 最简单的方法是定义默认值并允许其被覆盖。我

  • 是否可以在gradle.properties文件中定义test.maxParallelForks=runtime.runtime.availableProcessors(),而不是在test任务下的每个build.gradle文件中定义它?

  • 我为我的Java应用程序构建了一个Docker映像——https://bit bucket . org/ijabz/songkongdocker/src/master/Docker file 最后一行是 songremote.sh 的(简化)内容是 而且效果很好。 然而,我有一个客户想使用-m选项和路径运行songkong 例如 > 那么,有没有办法让一个泊坞站允许运行两个不同的命令,或者我必须构