我有一个正在运行的Maven构建(如下所示),它准备两个可执行文件作为两个单独的进程启动。
虽然这可以很好地工作,但如何使用Gradle来实现这一点?我看到Gradle提供了一个名为application
的插件,但我很难找到一个好的例子来告诉它,当输入:gradle stage
时,它应该创建两个可执行文件。
现在,当我调用stage
时,它只在Gradle脚本中定义的“根”主类上提供一个可执行文件:
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>
2条答案
按热度按时间jvlzgdj91#
不幸的是,Gradle应用程序插件没有为多个可执行脚本提供一流的支持。
不过幸运的是,因为Gradle脚本很好用,所以您可以相当容易地更改应用程序插件的功能。
documentation for the Application plugin显示
startScripts
任务的类型为CreateStartScripts,因此尝试为自己创建第二个相同类型的任务然后将该任务的输出包括在您的分发中
cbwuti442#
使用
JavaExec
可能更好然后可以运行
gradle scheduler web