Gradle creating duplicate start scripts into bin directory

自古美人都是妖i 提交于 2019-12-23 10:16:24

问题


I am trying to create multiple start script files through gradle. But somehow one particular start script file is getting duplicated.

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')

in bin directory I can see,

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

    What am I missing here? How to fix this?

Thank you for help.


回答1:


I solved this problem. Actually it was a mistake from my side and thanks to @Opal. I somehow forgot to delete 'mainClassName="com.main.A"' line from the header.

Also I have to add

distZip {
    duplicatesStrategy = 'exclude'
}


来源:https://stackoverflow.com/questions/33489384/gradle-creating-duplicate-start-scripts-into-bin-directory

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!