2016-12-28 1 views
1

Ich versuche, ein EAR von einem Java-Multi-Projekt zu bauen. Es gibt drei verschiedene WAR Projekte und mehrere JAR Projekte in diesem Projekt. Wenn ich das Projekt alle Abhängigkeiten von JAR bauen importiert in Ohr-lib und alle Abhängigkeiten von WAR Projekte importiert werden in ihre jeweiligen WEB-INF/lib. Aber alle WAR Projekte verwendet viele gemeinsame Abhängigkeiten. Mit all diesen Abhängigkeiten wird das Ergebnis EAR sehr groß (> 100 mb). Gibt es eine Möglichkeit, alle Abhängigkeiten in eine EAR Datei und keine in den WAR Dateien hinzuzufügen.Gradle Ear Build mit Abhängigkeiten von Krieg Datei

Meine EAR build.gradle wie wie unten aussieht ..

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") 
    } 

} 

Es folgt einer der WAR Datei 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' 
} 

ich die, die ich irgendwelchen Quellen versucht haben, könnte für das gleiche tun, aber keiner hat funktioniert. Bitte vorschlagen. Das Projekt soll auf WAS 8.5

Antwort

0

bereitgestellt werden. Ich hatte diese Lösung früher gefunden, aber war kurz, so dass es jetzt beantwortet.

Die build.gradle für Ohr sollte wie

folgt
apply plugin: 'ear' 
apply plugin: 'java' 


description = 'JavaEE6 Assembly' 
dependencies { 
    deploy project(path: ':WAR1', configuration: 'archives') 
    deploy project(path: ':WAR2', configuration: 'archives') 
    deploy project(path: ':WAR3', configuration: 'archives') 

    earlib project(':CommonJAR') 



} 

def deployedModules = [ 'WAR1', 'WAR2', 'WAR3' ] 

deployedModules.forEach { 
    def projectPath = ":${it}" 

    evaluationDependsOn(projectPath) 

    findProject(projectPath).configurations.providedCompile.allDependencies.forEach { 
     boolean isEarModule = it instanceof ProjectDependency && 
       (it as ProjectDependency).dependencyProject.name in deployedModules 
     if (!isEarModule) { 
      dependencies.add('earlib', it) 
     } 
    } 
} 

ear { 
    archiveName='EARNAME.ear' 
    libDirName 'lib' 
    into("META-INF"){ 
     from("META-INF") 
    } 
} 

Die build.gradle für die Krieg Dateien sein sollte wie folgt

apply plugin: 'war' 
apply plugin: 'java' 

description = 'WAR1' 
dependencies { 
    providedCompile project(':CommonJAR') 
    providedCompile group: 'commons-beanutils', name: 'commons-beanutils', version:'1.9.2' 
    providedCompile group: 'org.springframework', name: 'spring-jdbc', version:'4.0.5.RELEASE' 
    providedCompile group: 'org.springframework', name: 'spring-core', version:'4.0.5.RELEASE' 
    providedCompile group: 'org.springframework', name: 'spring-beans', version:'4.0.5.RELEASE' 
    providedCompile group: 'org.springframework', name: 'spring-webmvc', version:'4.0.5.RELEASE' 
    providedCompile group: 'org.springframework', name: 'spring-oxm', version:'4.0.5.RELEASE' 
    providedCompile group: 'org.springframework', name: 'spring-orm', version:'4.0.5.RELEASE' 
    providedCompile group: 'org.springframework', name: 'spring-context-support', version:'4.0.5.RELEASE' 
    providedCompile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version:'2.2.3' 
    providedCompile group: 'org.json', name: 'json', version:'20090211' 
    providedCompile(group: 'org.springframework', name: 'spring-context', version:'4.0.5.RELEASE') { 
exclude(module: 'commons-logging') 
    } 
    providedCompile group: 'commons-logging', name: 'commons-logging', version: '1.2' 
    providedCompile group: 'org.aspectj', name: 'aspectjrt', version:'1.7.4' 
    providedCompile group: 'org.slf4j', name: 'slf4j-api', version:'1.7.5' 
    compile(group: 'log4j', name: 'log4j', version:'1.2.15') { 
exclude(module: 'jms') 
exclude(module: 'jmxtools') 
exclude(module: 'jmxri') 
    } 
    providedCompile group: 'javax.inject', name: 'javax.inject', version:'1' 
    providedCompile group: 'javax.servlet', name: 'jstl', version:'1.2' 
    providedCompile group: 'io.springfox', name: 'springfox-swagger2', version:'2.1.1' 
    providedCompile group: 'org.springframework', name: 'spring-web', version:'4.0.5.RELEASE' 
    providedCompile group: 'org.slf4j', name: 'jcl-over-slf4j', version:'1.7.5' 
    providedCompile 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' 
    providedCompile group: 'org.apache.axis', name: 'axis', version:'1.4' 
} 


war{ 
    manifest { 
     attributes(
     "Manifest-Version": "1.0", 
     "Class-Path": configurations.providedCompile.collect {" lib/" + it.getName() }.join(' ') 
    ) 
    } 

} 
Verwandte Themen