我想使用Gradle「application」插件爲第二個mainClass創建startScripts。這可能嗎?即使應用程序插件沒有內置此功能,是否可以利用startScripts任務爲另一個mainClass創建第二對腳本?是否可以使用gradle'application'插件指定多個主類
回答
您可以創建CreateStartScripts
類型的多個任務,並在每個任務中配置不同的mainClassName
。爲了方便起見,你可以在循環中做到這一點。
是否有任何現有的代碼呢?文檔根本不能很好地解釋如何在「循環」中爲我們這些人同時學習groovy和gradle。 – Core
添加像這樣到根的build.gradle:
// Creates scripts for entry points
// Subproject must apply application plugin to be able to call this method.
def createScript(project, mainClass, name) {
project.tasks.create(name: name, type: CreateStartScripts) {
outputDir = new File(project.buildDir, 'scripts')
mainClassName = mainClass
applicationName = name
classpath = project.tasks[JavaPlugin.JAR_TASK_NAME].outputs.files + project.configurations.runtime
}
project.tasks[name].dependsOn(project.jar)
project.applicationDistribution.with {
into("bin") {
from(project.tasks[name])
fileMode = 0755
}
}
}
然後調用它無論是從根或子項目如下:
// The next two lines disable the tasks for the primary main which by default
// generates a script with a name matching the project name.
// You can leave them enabled but if so you'll need to define mainClassName
// And you'll be creating your application scripts two different ways which
// could lead to confusion
startScripts.enabled = false
run.enabled = false
// Call this for each Main class you want to expose with an app script
createScript(project, 'com.foo.MyDriver', 'driver')
我們可以創建一個啓動腳本來設置程序的命令行參數嗎? –
我結合這兩種回答的部分到達相對簡單的解決方案:
task otherStartScripts(type: CreateStartScripts) {
description "Creates OS specific scripts to call the 'other' entry point"
classpath = startScripts.classpath
outputDir = startScripts.outputDir
mainClassName = 'some.package.app.Other'
applicationName = 'other'
}
distZip {
baseName = archivesBaseName
classifier = 'app'
//include our extra start script
//this is a bit weird, I'm open to suggestions on how to do this better
into("${baseName}-${version}-${classifier}/bin") {
from otherStartScripts
fileMode = 0755
}
}
startScripts在應用程序創建時ation插件被應用。
applicationDistribution.from(otherStartScripts){into'bin'} – Joel
- 1. Gradle'application'插件 - 是否可以指定使用哪個mainClassName?
- 2. 是否可以使用通知屬性指定多個操作?
- 3. 是否可以爲參數指定多個類型提示?
- 4. 是否可以指定多個預期響應類型?
- 5. 是否可以引用指定多個強名稱的.NET dll
- 6. 是否可以指定要使用的日期類型?
- 7. 是否可以在MVC中使用多個主頁3
- 8. 是否可以使用Mojo的Hibernate插件生成Annotated Java類?
- 9. 是否可以使用PreparedStatement在Oracle上插入多個表?
- 10. 我可以用一個類名指定多個CSS類嗎?
- 11. 是否可以指定使用指令的作用域?
- 12. 是否可以使用單個測試測試多個類
- 13. 是否可以使用主鍵引用在列中插入值?
- 14. 是否可以在RMQ .NET中指定多個連接點?
- 15. Jenkins-多個位置SVN。是否可以指定構建版本
- 16. 是否可以同時爲多個指令定義{$ IFDEF}?
- 17. 是否可以在多個端點上指定管理 - 休眠?
- 18. 是否可以在使用ruby讀取文件時指定換行符類型
- 19. 是否可以使用多個罐子在hadoop中指定作業?
- 20. 如何在gradle.build中使用fatjar插件時指定主類
- 21. 是否可以將插件文件放入Wordpress主題中?
- 22. 是否可以重新命名一個科爾多瓦插件?
- 23. 使用BFG時可以指定多個文件嗎?
- 24. 是否可以使用藍圖指定進入帖子主體的參數?
- 25. 是否可以在angularjs 1.5(6)中使用typescript指定綁定值的類型
- 26. LDA可以爲一個單詞指定多個主題嗎?
- 27. 是否可以使用.each()數組來定位多個div?
- 28. Maven - 是否可以同時創建指定多個配置文件的項目?
- 29. 是否可以在外部文件中爲Spring Framework指定一個類名?
- 30. Joomla是否可以定期自動執行一個插件
看到這個答案:http://stackoverflow.com/questions/21241767/multiple-startscript-using-gradle-for-heroku – Phil