Gradle 用 jar 中的类文件打包资源

vac*_*ach 3 java gradle maven

使用 maven pom 在构建配置中具有此功能,我们正在构建一个 jar 文件,该文件在类文件附近的包中具有资源文件(在我的情况下这是必要的,因为某些类文件依赖于配置的约定,并希望这些资源文件紧挨着他们)。

<build>
    ...
    <resources>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.fxml</include>
                <include>**/*.css</include>
                <include>**/*.properties</include>
            </includes>
        </resource>
        <resource>
            <directory>src/main/resources</directory>
            <includes>
                <include>**/*.xml</include>
                <include>**/*.css</include>
                <include>**/*.properties</include>
            </includes>
        </resource>
    </resources>
    ...
</build>
Run Code Online (Sandbox Code Playgroud)

我们如何对 gradle 做同样的事情?

Opa*_*pal 5

您需要添加以下代码:

apply plugin: 'java'

jar {
   from('src/main/java') {
      include  '**/*.properties'
      include  '**/*.xml'
      include  '**/*.css'
   }
}
Run Code Online (Sandbox Code Playgroud)

它的工作方式如下:

?  33416293 git:(master) ? tree   
.
??? build.gradle
??? src
    ??? main
        ??? java
            ??? lol
                ??? Lol.java
                ??? lol.css
                ??? lol.properties
                ??? lol.xml

4 directories, 5 files
?  33416293 git:(master) ? gradle jar   
:compileJava
:processResources UP-TO-DATE
:classes
:jar

BUILD SUCCESSFUL

Total time: 3.035 secs
?  33416293 git:(master) ? jar -tvf build/libs/33416293.jar 
     0 Thu Oct 29 15:55:40 CET 2015 META-INF/
    25 Thu Oct 29 15:55:40 CET 2015 META-INF/MANIFEST.MF
     0 Thu Oct 29 15:55:40 CET 2015 lol/
   242 Thu Oct 29 15:55:40 CET 2015 lol/Lol.class
     8 Thu Oct 29 15:51:28 CET 2015 lol/lol.css
     9 Thu Oct 29 15:47:00 CET 2015 lol/lol.properties
    15 Thu Oct 29 15:51:22 CET 2015 lol/lol.xml
?  33416293 git:(master) ? 
Run Code Online (Sandbox Code Playgroud)

在这里你可以找到演示