2013-03-12 7 views
22

Ich versuche, ein Ohr mit Gradle zu bauen.
Ich habe mein Projekt Baum wie:Gradle Ohr setzt JAR anstelle von WAR

/project 
| 
|--> /web-application 
| | 
| |--> /src (stuff of web app) 
| | 
| |--> build.gradle 
| 
|--> build-gradle 
|--> settings.gradle 

Ich versuche, das Ohr mit der Ohr-Plugin zu erzeugen, aber wenn ich gradle assemble tun habe ich den Krieg unter dem Build erstellt Verzeichnis der Web-Anwendung, aber innerhalb der generierten Ohr Ich habe eine Glas der Web-Anwendung. Die gradle Konfigurationsdateien sind sehr einfach, hier sind sie:

Projekt/build.gradle

apply plugin: 'ear' 

repositories { 
    mavenCentral() 
} 

dependencies { 
    deploy project(':web-application') 
    earlib group: 'log4j', name: 'log4j', version: '1.2.15', ext: 'jar' 
} 

Projekt/web-application/build.gradle

apply plugin: 'war' 

repositories { 
    mavenCentral() 
} 

dependencies { 
    compile group: 'log4j', name: 'log4j', version: '1.2.15', ext: 'jar' 
} 

Was Ich habe falsch gemacht?

Ich stelle fest, dass auch die gebündelten Proben für den Krieg Plugin, haben das gleiche Problem ... Vielen Dank im Voraus

Antwort

33

GELÖST!

Es braucht die WAR-Modul innerhalb des EAR-Projekt zu konfigurieren:

dependencies { 
    deploy project(path:':web-application', configuration:'archives') 
    earlib group: 'log4j', name: 'log4j', version: '1.2.15', ext: 'jar' 
} 
+1

Gibt es Referenz in der Dokumentation? – angelcervera

+0

Ich erinnere mich nicht, wo ich diese Lösung nehme, und die Dokumentation ist ein wenig verwirrend ... – rascio

+2

Konfiguration doc: http://www.gradle.org/docs/current/dsl/org.gradle.api. Artefakte.Konfiguration.html – angelcervera

1

Sie vermeiden können für jede bereitstellen eine Konfiguration spezifizieren Abhängigkeit so etwas wie dies mit:

allprojects { 
    plugins.withType(WarPlugin) { 
    // Set default configuration as WAR archive if WAR plugin is used 
    configurations { 
     'default' { 
     extendsFrom = [archives] 
     } 
    } 
    } 
} 

... 

dependencies { 
    deploy project(':web-application') 
} 
Verwandte Themen