Gradle 在 bin 目录中创建重复的启动脚本
Gradle creating duplicate start scripts into bin directory
我正在尝试通过 gradle 创建多个启动脚本文件。但是不知何故,一个特定的启动脚本文件被复制了。
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
我在这里错过了什么?如何解决这个问题?
感谢您的帮助。
我解决了这个问题。实际上这是我这边的一个错误,感谢@Opal。我不知何故忘记从 header.
中删除 'mainClassName="com.main.A"' 行
我还要补充
distZip {
duplicatesStrategy = 'exclude'
}
我正在尝试通过 gradle 创建多个启动脚本文件。但是不知何故,一个特定的启动脚本文件被复制了。
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
我在这里错过了什么?如何解决这个问题?
感谢您的帮助。
我解决了这个问题。实际上这是我这边的一个错误,感谢@Opal。我不知何故忘记从 header.
中删除 'mainClassName="com.main.A"' 行我还要补充
distZip {
duplicatesStrategy = 'exclude'
}