2016-11-23 8 views
0

Итак, я пытаюсь создать проект уха корневого уровня, который будет включать в себя несколько военных проектов, и я не могу заставить его работать. Для того, чтобы урезать его до простейшего уровня, позволяет предположим, что у меня есть структура каталогов вроде этого:Gradle - Включите несколько проектов WAR в EAR

myEar/ 
├── build.gradle 
├── myWar1 
│ ├── build.gradle 
│ └── src 
│  └── main 
│   ├── java 
│   │ └── com 
│   │  └── foo 
│   │   └── hello.java 
│   ├── resources 
│   └── webapp 
│    ├── test.html 
│    └── WEB-INF 
│     └── web.xml 
├── myWar2 
│ ├── build.gradle 
│ └── src 
│  └── main 
│   ├── java 
│   │ └── com 
│   │  └── foo 
│   │   └── hello.java 
│   ├── resources 
│   └── webapp 
│    ├── test.html 
│    └── WEB-INF 
│     └── web.xml 
├── settings.gradle 
└── src 
    └── main 
     └── application 
      └── application.xml 

Каждый build.gradle файл в subporjects myWarX просто так:

defaultTasks 'war' 
apply plugin: 'war' 

Когда я бегу Gradle внутри папок myWar1/2 я получаю ожидаемый результат:

jar -xvf myWar1.war 
    created: META-INF/ 
inflated: META-INF/MANIFEST.MF 
    created: WEB-INF/ 
    created: WEB-INF/classes/ 
    created: WEB-INF/classes/com/ 
    created: WEB-INF/classes/com/foo/ 
inflated: WEB-INF/classes/com/foo/hello.class 
inflated: WEB-INF/web.xml 
inflated: test.html 

Теперь на myEar корневого уровня проекта, у меня есть следующий settings.gradle файл:

включают в себя ": myWar1", ":" myWar2

и build.gradle выглядит следующим образом:

defaultTasks 'assemble' 

allprojects { 

    apply plugin: 'java' 
    apply plugin: 'eclipse' 
    apply plugin: 'war' 
    apply plugin: 'ear' 
} 

dependencies { 
    deploy project(path: ':myWar1', configuration: 'archives') 
    deploy project(path: ':myWar2', configuration: 'archives') 
} 

Теперь, когда я запускаю это, он создает файл myEar.ear достаточно точно, но как военные проекты перечисляются как myWar1/2.ear в архиве. Кроме того, если я расшириться эти файлы уха, это пропавшие вещи, как HTML-файлы и web.xml:

jar -xvf myEar.ear 
    created: META-INF/ 
inflated: META-INF/MANIFEST.MF 
inflated: myWar1.ear 
inflated: myWar2.ear 
inflated: application.xml 
inflated: META-INF/application.xml 

jar -xvf myWar1.ear 
    created: META-INF/ 
inflated: META-INF/MANIFEST.MF 
    created: com/ 
    created: com/foo/ 
inflated: com/foo/hello.class 
inflated: META-INF/application.xml 

Похоже, что должно быть простое решение этой проблемы, но я не могу для жизнь меня находит. Любая помощь будет с благодарностью оценена.

Thanks, Marcus.

ответ

1

ОК Я идиот. Это было потому, что я применяю плагин «уха» ко всем проектам. Если я заменяю:

allprojects { 
    apply plugin: 'java' 
    apply plugin: 'eclipse' 
    apply plugin: 'war' 
    apply plugin: 'ear' 
} 

с просто

apply plugin 'ear' 

все работает как задумано.

Смежные вопросы