gpt4 book ai didi

maven - 使用 Gradle 的多个启动脚本

转载 作者:行者123 更新时间:2023-12-04 06:03:21 24 4
gpt4 key购买 nike

我有一个工作 Maven 构建(如下所示),它准备了几个可执行文件作为两个单独的进程启动。

虽然这工作正常,但如何使用 Gradle 做到这一点?我看到 Gradle 提供了一个名为 application 的插件,但我很难找到一个很好的例子来说明如何在输入时告诉它:gradle stage ,它应该创建 2 个可执行文件。

现在当我打电话时stage它只在我的 gradle 脚本中定义的“root”主类上提供一个可执行文件:

apply plugin: 'java'
apply plugin: 'application'

mainClassName = 'SpringLauncher'
applicationName = 'foo'
compileJava.options.encoding = 'UTF-8'
targetCompatibility = '1.7'
sourceCompatibility = '1.7'

task stage(dependsOn: ['clean', 'installApp', 'hello'])

和 Maven 构建:
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>appassembler-maven-plugin</artifactId>
<version>1.1.1</version>
<configuration>
<assembleDirectory>target</assembleDirectory>
<programs>
<program>
<mainClass>foo.bar.scheduler.SchedulerMain</mainClass>
<name>scheduler</name>
</program>
<program>
<mainClass>SpringLauncher</mainClass>
<name>web</name>
</program>
</programs>
</configuration>
<executions>
<execution>
<phase>package</phase><goals><goal>assemble</goal></goals>
</execution>
</executions>
</plugin>
</plugins>

最佳答案

不幸的是,gradle 应用程序插件没有为多个可执行脚本提供一流的支持。

幸运的是,因为 gradle 脚本是 groovy,所以您可以相当轻松地更改应用程序插件的功能。

documentation for the Application plugin显示startScripts任务类型为 CreateStartScripts ,所以尝试为自己创建一个相同类型的第二个任务

task schedulerScripts(type: CreateStartScripts) {
mainClassName = "foo.bar.scheduler.SchedulerMain"
applicationName = "scheduler"
outputDir = new File(project.buildDir, 'scripts')
classpath = jar.outputs.files + project.configurations.runtime
}

然后在您的发行版中包含该任务的输出
applicationDistribution.into("bin") {
from(schedulerScripts)
fileMode = 0755
}

关于maven - 使用 Gradle 的多个启动脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21241767/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com