我有一个有效的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'])
Run Code Online (Sandbox Code Playgroud)
和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>
Run Code Online (Sandbox Code Playgroud)
Per*_*ler 11
遗憾的是,gradle应用程序插件不提供对多个可执行脚本的一流支持.
幸运的是,因为gradle脚本是常规的,所以你可以很容易地改变应用程序插件的功能.
Application插件的文档显示该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
}
Run Code Online (Sandbox Code Playgroud)
然后在您的发行版中包含该任务的输出
applicationDistribution.into("bin") {
from(schedulerScripts)
fileMode = 0755
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2509 次 |
| 最近记录: |