gradle从所有jar中排除外部资源文件夹

时间:2019-05-10 06:57:47

标签: java gradle netbeans

使用gradle 5.4和netbeans项目中来自外部文件夹的项目依赖项。

外部文件夹包含只能由该netbeans项目创建的资源,例如图像,xml和自定义对象。然后,这些外部资产用于创建二进制文件,该文件由该netbeans项目打包到一个单独的jar中。

这些相同的外部资源也将在运行时期间用于gradle项目中的开发。虽然我需要gradle项目中的开发资源,但是使用task build命令时,由于任何原因,我都不需要或不想将它们包含在任何jar中,因为只需要分发二进制文件即可。

如何从gradle项目中的任何和所有jar文件中排除外部资源,但如何将它们用于classPath,以便我可以运行该项目?

一些失败的代码示例。

apply plugin: 'java'
apply plugin: 'application'
apply plugin: 'idea'

sourceSets { 
   main { 
      resources { 
         srcDir '../ExternalResourceFolder/assets' 
      } 
   }   
}

jar {
    exclude('../ExternalResourceFolder/assets/**')
}
dependencies {
    runtimeOnly files('../ExternalResourceFolder/assets') 
}

jar {
    exclude('../ExternalResourceFolder/assets/**')
}
distributions {
    main {
        contents {
            exclude '../ExternalResourceFolder/assets/**'
        }
    }
}

尝试了很多其他事情,例如添加到classPath并排除,但是添加它们只是很麻烦。从sourceSet更改为依赖关系只会使问题从“ build / lib”文件夹移至“ build / distributions”文件夹。

1 个答案:

答案 0 :(得分:0)

最后必须排除每种文件类型。

    sourceSets {
    main {
        resources {
            srcDir '.'
            exclude ('**/*.j3odata','**/*.mesh','**/*.skeleton',\
                    '**/*.mesh.xml','**/*.skeleton.xml','**/*.scene',\
                    '**/*.material','**/*.obj','**/*.mtl','**/*.3ds',\
                    '**/*.dae','**/*.blend','**/*.blend*[0-9]','**/*.bin',\
                    '**/*.gltf')
        }
    }
}