5

我想通過gradle創建多個啓動腳本文件。但不知何故,一個特定的啓動腳本文件正在重複。Gradle創建重複的啓動腳本到bin目錄

startScripts.enabled = false 
run.enabled = false 

def createScript(project, mainClass, name) { 
    project.tasks.create(name: name, type: CreateStartScripts) { 
    outputDir  = new File(project.buildDir, 'scripts') 
    mainClassName = mainClass 
    applicationName = name 
    classpath  = jar.outputs.files + project.configurations.runtime 

    doLast { 
      def windowsScriptFile = file getWindowsScript() 
      def unixScriptFile = file getUnixScript() 
     windowsScriptFile.text = windowsScriptFile.text.replace('%APP_HOME%\\lib\\conf', '%APP_HOME%\\conf') 
      unixScriptFile.text = unixScriptFile.text.replace('$APP_HOME/lib/conf', '$APP_HOME/conf') 
    } 
    } 
    project.tasks[name].dependsOn(project.jar) 

    project.applicationDistribution.with { 
    into("bin") { 
     from(project.tasks[name]) 
     fileMode = 0755 
    } 
    } 
} 



// Call this for each Main class you want to expose with an app script 
createScript(project, 'com.main.A', 'A') 
createScript(project, 'com.main.B', 'B') 
在bin目錄中,我可以看到

  • A.sh
  • A.sh
  • A.bat
  • A.bat
  • B.sh
  • B.bat

    我在這裏錯過了什麼?如何解決這個問題?

謝謝你的幫忙。

+0

是否有重複有何區別?而且..是否還有其他任何準備「A」腳本的任務? – Opal

+0

@opal是的,scriprs是相同的。我沒有其他的相同的任務。 – SRJ

回答

3

我解決了這個問題。其實這是我的錯誤,並感謝@Opal。我不知何故忘了從頭中刪除'mainClassName =「com.main.A」'行。

而且我要補充

distZip { 
    duplicatesStrategy = 'exclude' 
}