我正在尝试从java多项目构建 EAR . 此项目中有三个不同的 WAR 项目和多个 JAR 项目 . 当我构建项目时, JAR 的所有依赖项都被导入 ear-lib , WAR 项目的所有依赖项都被导入到它们各自的 WEB-INF/lib 中 . 但是所有 WAR 项目都使用了许多常见的 dependencies . 有了这些所有的依赖关系,结果 EAR 变得非常大(> 100 mb) . 有没有办法将所有依赖项添加到 EAR 文件中,而 WAR 文件中没有 .
我的 EAR build.gradle 如下所示..
apply plugin: 'ear'
apply plugin: 'java'
configurations {
earLib.extendsFrom runtime
earLib.transitive = true
}
description = 'JavaEE6 Assembly'
dependencies {
deploy project(path: ':WAR1', configuration: 'archives')
deploy project(path: ':WAR2', configuration: 'archives')
deploy project(path: ':WAR3', configuration: 'archives')
earlib project(':CommonJAR1')
earlib project(':CommonJAR2')
// Writing as below does not work in this case
// earLib group: 'io.springfox', name: 'springfox-swagger2', version:'2.1.1'
}
ear {
archiveName='EARNAME.ear'
libDirName 'lib'
into("META-INF"){
from("META-INF")
}
}
以下是 WAR 文件build.gradle之一
apply plugin: 'war'
description = 'WAR2'
dependencies {
compile project(':CommonJAR1')
compile group: 'commons-beanutils', name: 'commons-beanutils', version:'1.9.2'
compile group: 'org.springframework', name: 'spring-jdbc', version:'4.0.5.RELEASE'
compile group: 'org.springframework', name: 'spring-core', version:'4.0.5.RELEASE'
compile group: 'org.springframework', name: 'spring-beans', version:'4.0.5.RELEASE'
compile group: 'org.springframework', name: 'spring-webmvc', version:'4.0.5.RELEASE'
compile group: 'org.springframework', name: 'spring-oxm', version:'4.0.5.RELEASE'
compile group: 'org.springframework', name: 'spring-orm', version:'4.0.5.RELEASE'
compile group: 'org.springframework', name: 'spring-context-support', version:'4.0.5.RELEASE'
compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version:'2.2.3'
compile group: 'org.json', name: 'json', version:'20090211'
compile(group: 'org.springframework', name: 'spring-context', version:'4.0.5.RELEASE') {
exclude(module: 'commons-logging')
}
compile group: 'org.aspectj', name: 'aspectjrt', version:'1.7.4'
compile group: 'org.slf4j', name: 'slf4j-api', version:'1.7.5'
compile(group: 'log4j', name: 'log4j', version:'1.2.15') {
exclude(module: 'mail')
exclude(module: 'jms')
exclude(module: 'jmxtools')
exclude(module: 'jmxri')
}
compile group: 'javax.inject', name: 'javax.inject', version:'1'
compile group: 'javax.servlet', name: 'jstl', version:'1.2'
runtime group: 'io.springfox', name: 'springfox-swagger2', version:'2.1.1'
runtime group: 'org.springframework', name: 'spring-web', version:'4.0.5.RELEASE'
runtime group: 'org.slf4j', name: 'jcl-over-slf4j', version:'1.7.5'
runtime group: 'org.slf4j', name: 'slf4j-log4j12', version:'1.7.5'
providedCompile group: 'javax.servlet', name: 'servlet-api', version:'2.5'
providedCompile group: 'javax.servlet.jsp', name: 'jsp-api', version:'2.1'
}
我已经尝试过任何可以找到相同的来源,但都没有用 . 请建议 . 该项目将部署在 WAS 8.5
1 回答
我之前找到了这个解决方案,但时间很短,所以现在回答它 .
ear 的 build.gradle 应如下所示
war files 的 build.gradle 应如下所示