【问题标题】:gradle exclude external resource folder from all jarsgradle 从所有 jar 中排除外部资源文件夹
【发布时间】:2019-09-28 01:11:42
【问题描述】:

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

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

这些相同的外部资源也在运行时用于 gradle 项目的开发。虽然我需要在 gradle 项目中开发资源,但在使用任务构建命令时,我不需要或不希望将它们包含在任何地方的任何 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”文件夹。

【问题讨论】:

    标签: java gradle netbeans


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-01
      • 2014-11-12
      • 1970-01-01
      • 1970-01-01
      • 2022-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多