Я пытаюсь построить тощую войну для последующего включения в большой файл уха. Ушная сборка полностью отделена от моего проекта войны и ожидает, что я предоставил бы тощую войну, с правильным файлом манифеста, ухо обещает поставлять предоставленные банки в свою папку root/libs.maven-war-plugin как исключить предоставленный jar из каталога lib, но включить в манифест с папкой с префиксом
Проблема, с которой я столкнулась, - получить файл manifest.mf в войне, чтобы указать, что предоставленные jar находятся в папке уха/libs, а комбайны/исполняемые файлы находятся в состоянии войны. т.е. запись manifest.mf класса путь хочет выглядеть следующим образом:
Class-Path: libs/commons-lang.jar commons-codec.jar
Обще-Ланг области видимости при условии, и, как ожидается, будет в директории LIBS в уха.
commons-codec - это время компиляции и ожидается, что оно станет частью войны.
Я исследовал Maven войны-плагин, но не могу понять, как заставить его поставить classpathPrefix всего за предоставленные зависимостей.
Предложения, пожалуйста?
Окончательное решение принимается (спасибо всем советы и ссылки) Требуется зависимости, предоставляемые уха быть ограничена, чтобы при условии, и это заметил хак: фальшивый-application.xml:
<plugin>
<!--required to fix the war's manifest and skinny the war-->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<version>2.10.1</version>
<configuration>
<defaultLibBundleDir>lib/</defaultLibBundleDir>
<skinnyWars>true</skinnyWars>
<generateApplicationXml>true</generateApplicationXml>
<applicationXml>${project.basedir}/src/test/fake-ear/fake-application.xml</applicationXml>
</configuration>
<executions>
<execution>
<phase>verify</phase>
<goals><goal>ear</goal></goals>
</execution>
</executions>
</plugin>
я затем развернуть эту новую тощую войну в хранилище и не так, используя Maven развёртывать плагин:
<plugin>
<!--used in release build to deploy skinny war to nexus-->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
<executions>
<execution>
<id>deploy-file</id>
<phase>install</phase>
<goals>
<goal>deploy-file</goal>
</goals>
<configuration>
<!--location of the skinny war after maven-ear-plugin builds it-->
<file>${project.build.directory}/${project.artifactId}-${project.version}/${artifactid}-${project.parent.version}.war</file>
<repositoryId>releases</repositoryId>
<url>${distributionManagement.repository.url}</url>
<groupId>${project.parent.groupId}</groupId>
<artifactId>${artifactid}</artifactId>
<version>${project.parent.version}</version>
<packaging>war</packaging>
</configuration>
</execution>
</executions>
</plugin>
Вы хотите посмотреть на EAR плагин Maven, так как вы хотите, чтобы создать EAR. Он поддерживает кожные войны, и он правильно перезаписывает манифест каждой WARs. Http://maven.apache.org/plugins/maven-ear-plugin/examples/skinny-wars.html – Tunaki
Но в противном случае вам нужно передать ' true addClasspath> 'для вашей конфигурации' ', см. связанный вопрос. –
Tunaki