Структура, которую я хотел бы предложить в этих случаях, - иметь проект мультимодуля maven, предоставляющий ваш прикладной модуль (упаковку jar), военный модуль (военная упаковка) и ушной модуль (ушная упаковка), чтобы иметь четкое разделение проблем и создать maven единый артефакт для каждого модуля.
Если ваш проект в настоящее время классического проект Maven, вы можете создать модуль агрегатора проект (П упаковку) следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>your.group.id</groupId>
<artifactId>your.artifact.id-aggregator</artifactId>
<packaging>pom</packaging>
<version>your.version</version>
<modules>
<module>your.artifact.id-application</module>
<module>your.artifact.id-war</module>
<module>your.artifact.id-ear</module>
</modules>
</project>
Это означает, что проект агрегатора будет указывать на Maven модулей, существующие в подпапках ваших. artifact.id-application, your.artifact.id-war и your.artifact.id-ear. Модуль приложения представляет собой простой проект Maven, обеспечивающий логику вашего приложения и создание из него файла jar. Он не является обязательным, но он также может указывать родителем на проект агрегатора (агрегация и наследование - две разные вещи в Maven, которые можно смешивать или использовать по-разному). Вы можете объявить родительский проект модулей следующим образом:
<parent>
<groupId>your.group.id</groupId>
<artifactId>your.artifact.id-aggregator</artifactId>
<version>your.version</version>
</parent>
В модуле приложения, вам не нужно указывать упаковку, так как по умолчанию он будет баночка, в то время как в ухе и военного модуля, упаковка будет быть соответственно ухом и войной.
Модуль войны должен иметь модуль приложения в качестве его зависимости. Модуль WAR также является хорошим местом для проведения интеграционных тестов. Вы также можете настроить здесь запуск/остановку плагина maven в качестве части фазы pre/post-integration-test. Модуль войны также предоставит необходимую структуру src \ main \ webapp \ WEB-INF
Модуль уха должен будет иметь военный модуль в качестве его зависимости, и важно указать его тип, войну, следующим образом:
<dependencies>
<dependency>
<groupId>your.group.id</groupId>
<artifactId>your.application.id-war</artifactId>
<version>your.version</version>
<type>war</type>
</dependency>
</dependencies>
Обратите внимание на войну. Модуль уха также предоставит необходимую структуру src \ main \ application \ META-INF. Модуль ухо может настроить Maven-ушного плагин просто следующим образом:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<configuration>
<modules>
<webModule>
<groupId>your.group.id</groupId>
<artifactId>your.artifact.id-war</artifactId>
<bundleFileName>your.artifact.id.war</bundleFileName>
<contextRoot>/your.artifact.id</contextRoot>
</webModule>
</modules>
</configuration>
</plugin>
</plugins>
</build>
его application.xml файл (при СРК \ главная \ приложения \ META-INF) может просто выглядеть, как показано ниже:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE application PUBLIC "-//Sun Microsystems, Inc.//DTD J2EE Application 1.3//EN" "http://java.sun.com/dtd/application_1_3.dtd">
<application>
<display-name>your.group.id.your.artifact.id_ear</display-name>
<module>
<web>
<web-uri>your.artifact.id.war</web-uri>
<context-root>/your.artifact.id</context-root>
</web>
</module>
</application>
Это может выглядеть чрезмерно сложным, как структура, но дает вам контроль над модулями и артефактами, отвечает лучшим практикам и улучшает фокус (т.е. код приложения только на модуле приложения, интеграционные тесты только на военном модуле).
Звуки жизнеспособны. Хотя нет способа, чтобы я мог просто создать '.ear'? Я вижу вариант импортировать проект '.ear' в' eclipse', однако я не понимаю, почему это не работает. – TheLuminor
На самом деле я нашел два связанных ответа, которые обеспечивают почти тот же подход: http://stackoverflow.com/questions/1134894/maven2-best-practice-for-enterprise-project-ear-file и http://stackoverflow.com/ вопросы/6829961/create-complete-ear-project-with-maven-and-eclipse-helios, а здесь http://javahonk.com/create-maven-ear-project-eclipse/ есть пошаговые инструкции Например, я не просмотрел всю статью, но, опять же, он дает руководство по реализации того же подхода. –
Ссылка - http://javahonk.com/create-maven-ear-project-eclipse/ tha tyou Опубликовано, это то, что я могу понять. Итак, прямо в начале, где он говорит - 'Создать родительский модуль: JavaHonkParent Нажмите« Файл »->« Создать »->« Другое »-> Maven -> Maven Project, затем нажмите« Далее »- самый первый шаг, он создает пустую' maven' проект и создание файла '.war' и файла' .jar' и последующего добавления их в родительский файл '.ear' - все звуки и кажется хорошим. Делает полный смысл. Однако он создал пустой проект и, возможно, позже работал над ним. У меня уже есть проект. Что мне с этим делать? – TheLuminor