2017-07-28 76 views
0

我有一个关于从耳朵工件中排除jar文件的问题。我的项目有以下几个模块:Gradle:如何从ear文件中排除jar?

project 
- ejb_module 
- war_module 
- ear_module 
- other_module 

在我ear_module/build.gradle

dependencies { 
    deploy project(ejb_module) 
    earlib project(ejb_module) 

    deploy project(war_module) 
    earlib project(war_module) 
} 

问题是我如何排除来自war_module产生的罐子神器。

war_module产生战争和罐子制品。我需要罐子神器的原因是我的other_module取决于它。

一个复杂的因素是war_module有一些依赖需要通过earlib去。

所以我的问题是我如何从ear文件中排除war_module.jar?它包含在根目录和APP-INF/lib中。

回答

0

我在你war_module你申请都warjava插件获得.war..jar文物推测?

尝试:

deploy project(path: 'war_module', configuration: 'archives') 
earlib project(path: 'war_module', configuration: 'archives') 

应该拿起.war只,因为如果考虑的摇篮战争插件代码,你可以看到,它覆盖项目的默认输出,是否包含Java插件。

另外,war插件使用java插件来编译你的代码。


你,当然,可以简单地使用

config (project){exclude module: 'name'} 

排除从构建制造品,但我认为这不是你可以在这里做的最好。


试着看这取决于providedRuntimeruntimeOnly配置你使用哪个摇篮的版本。

如果人工制品用于编译然后compileOnly

dependecies{}使用将使用的jar此配置,但不会去揭露它在其他地方,那么它应该在你建立任何假象没有土地和这可能是最适合你的情况,但问题并不在于询问这只是一个建议。

+0

谢谢,但它没有奏效。我接近加入: foo { extendsFrom runtime } 但它仍然包含来自war_module的jar文件。配置:档案没有效果。 – user3111525

+0

然后,我认为你的架构中有些东西是混乱的。你如何制造战争和罐子? – LazerBanana