Java 如何使用Gradle将配置文件从jar中分离出来
我是Gradle的新手,在新项目中,我尝试使用Gradle4来管理和编译项目。任务installDist用于生成分发文件夹。Gradle将类和所有配置压缩到jar文件中,它工作得很好,但我希望jar只包含独立文件夹中的类和配置 以下是我的源文件夹结构:Java 如何使用Gradle将配置文件从jar中分离出来,java,gradle,Java,Gradle,我是Gradle的新手,在新项目中,我尝试使用Gradle4来管理和编译项目。任务installDist用于生成分发文件夹。Gradle将类和所有配置压缩到jar文件中,它工作得很好,但我希望jar只包含独立文件夹中的类和配置 以下是我的源文件夹结构: src --main --java --resources build --install --${project.name} --bin --lib 以下是当前的dist文件夹结构: src --main -
src
--main
--java
--resources
build
--install
--${project.name}
--bin
--lib
以下是当前的dist文件夹结构:
src
--main
--java
--resources
build
--install
--${project.name}
--bin
--lib
但是我想要下面的东西:
build
--install
--${project.name}
--bin
--lib
--resources
我想开始脚本也应该修改,现在我编写了一个CreateStartScripts任务,如下所示:
task testServer(type: CreateStartScripts) {
mainClassName = 'com.xxx.test.Server'
applicationName = 'test-server'
outputDir = new File(project.buildDir, 'tmp')
classpath = jar.outputs.files + project.configurations.runtime
}
有人能帮我写Gradle脚本吗?3 build.Gradle中的修改:
processResources {
// if you have any other file suffix, append them below
exclude '*.properties', '*.xml'
}
apply plugin: 'distribution'
installDist.doLast {
copy {
from 'src/main/resources/'
// $rootProject.name defined in settings.gradle
into "$buildDir/install/$rootProject.name/resources"
}
}
task testServer(type: CreateStartScripts) {
mainClassName = 'com.XXX.XXX.TestServer'
applicationName = 'test-server'
outputDir = new File(project.buildDir, 'tmp')
classpath = jar.outputs.files + project.configurations.runtime
classpath += files('src/main/resources')
// gradle find all classpath files under install/${projectname}/lib defaultly
// replace lib/resources with resources, thank [Fadeev's solution][1]
doLast {
def windowsScriptFile = file getWindowsScript()
def unixScriptFile = file getUnixScript()
windowsScriptFile.text = windowsScriptFile.text.replace('%APP_HOME%\\lib\\resources', '%APP_HOME%\\resources')
unixScriptFile.text = unixScriptFile.text.replace('$APP_HOME/lib/resources', '$APP_HOME/resources')
}
}