我有这些build.gradle文件:
dependencies {
runtime files('src/main/resources')
runtime files('src/main/resources/cfg')
runtime files('src/main/resources/sql')
}
jar {
exclude 'cfg/*'
exclude 'cfg/'
exclude 'sql/*'
exclude 'sql/'
}
这一个
dependencies {
runtime files('src/main/resources')
runtime files('src/main/resources/cfg')
runtime files('src/main/resources/fxml')
runtime files('src/main/resources/icons')
}
jar {
exclude 'cfg/*'
exclude 'cfg/'
exclude 'icons/*'
exclude 'icons/'
exclude 'fxml/*'
exclude 'fxml/'
}
startScripts {
doLast {
def winScriptFile = file getWindowsScript()
def winFileText = winScriptFile.text
winFileText = winFileText.replaceAll 'set CLASSPATH=.*', 'set CLASSPATH=%APP_HOME%\\\\lib\\\\\\*;%APP_HOME%\\\\lib\\\\cfg;%APP_HOME%\\\\lib\\\\fxml;%APP_HOME%\\\\lib\\\\icons;%APP_HOME%\\\\lib\\\\sql'
}
}
我可以从projectName.jar文件中排除资源目录及其文件,但是我无法从dist目录/ distTar任务创建的/ lib目录中排除子目录中的文件。
我希望在zip / tar
中使用此布局projectName/
|
|-lib/
| |
| |-cfg/
| | |-*.*
| |
| |-fxml/
| | |-*.fxml
| |
| |-icons/
| | |-*.ico
| |
| |-sql/
| | |-*.sql
| |
| |-*.jar
|
|-bin/
|
|-projectName.bat
子目录中的所有资源都不包含在lib目录中,并且子目录在CLASSPATH
中的projectName.bat
变量中设置,以便应用程序能够加载所有资源
答案 0 :(得分:2)
您可以添加未包含在项目的JAR文件中的新源集:
$childForm = '';
<?php
$array = array(1,2);
foreach ($array as $arr) {
$childForm .= '<form action="" id="'.$arr.'" method="POST">
<input type="text" placeholder="hello"/>
</form>';
}
?>
<form action="" method="POST">
<?php echo $childForm; ?>
</form>
此源集包含实际分发所需的依赖项。 sourceSets {
dist {
resources {
srcDirs=['src/main/dist']
}
}
}
下的文件夹结构需要重建src/main/dist
artificat的所需结构,并自动成为ZIP / JAR的一部分:
distZip
要在生成的启动脚本中将资源添加到应用程序的类路径,您可以执行以下操作:
src/main/dist
└ lib
├ cfg
│ └ …
├ sql
⁞ └ …
这会将startScripts.classpath.add(files('\"')).add(files('cfg')).add(files('sql'))
,%APP_HOME%\lib\.
和%APP_HOME%\lib\cfg
添加到启动脚本的类路径中。
答案 1 :(得分:1)
我能够弄清楚,我必须提供这样的资源,将子目录放在lib目录中
dependencies {
runtime files('src/main/resources')
}
这个改变:
- winFileText = winFileText.replaceAll 'set CLASSPATH=.*', 'set CLASSPATH=%APP_HOME%\\\\lib\\\\\\*;%APP_HOME%\\\\lib\\\\cfg;%APP_HOME%\\\\lib\\\\fxml;%APP_HOME%\\\\lib\\\\icons;%APP_HOME%\\\\lib\\\\sql'
+ winFileText = winFileText.replaceAll 'set CLASSPATH=.*', 'set CLASSPATH=%APP_HOME%\\\\lib\\\\\\*;%APP_HOME%\\\\lib;%APP_HOME%\\\\lib\\\\cfg;APP_HOME%\\\\lib\\\\fxml;APP_HOME%\\\\lib\\\\icons;APP_HOME%\\\\lib\\\\sql'
缺少这个:%APP_HOME%\\\\lib;
这是必需的,因为fxml资源在源代码中被引用如下:
getClass().getResource("/fxml/somelayout.fxml")
它在CLASSPATH
目录中的lib/
上查找资源。这是缺失的。