2015-12-01 2 views
2

Я разработал веб-приложение, которое до сих пор тестировалось локально, используя Tomcat как server.Как создать файл EAR для существующего проекта Maven

Я сейчас хочу перейти на Oracle WebLogic Server 11gR1 (10.3.5) для дальнейшего использования. Я посмотрел и узнал, что есть файлы .ear, такие как .war файл, который поддерживается. Поскольку я использую Eclipse, я загрузил и установил в нем Weblogic Plugin и успешно добавил server.

Однако, если я хочу развернуть файл .ear на WebLogic, каковы шаги, которые мне нужно выполнить? Есть ли определенная файловая структура, которую должен иметь мой существующий Maven Project?

Я не смогла экспортировать .ear file с eclipse. Я понимаю, что после того, как файл .ear будет готов, я смогу переместить его в свои папкии запустить его оттуда.

Но как я могу создать файл .ear моего существующего проекта maven?

ответ

1

Структура, которую я хотел бы предложить в этих случаях, - иметь проект мультимодуля 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> 

Это может выглядеть чрезмерно сложным, как структура, но дает вам контроль над модулями и артефактами, отвечает лучшим практикам и улучшает фокус (т.е. код приложения только на модуле приложения, интеграционные тесты только на военном модуле).

+0

Звуки жизнеспособны. Хотя нет способа, чтобы я мог просто создать '.ear'? Я вижу вариант импортировать проект '.ear' в' eclipse', однако я не понимаю, почему это не работает. – TheLuminor

+0

На самом деле я нашел два связанных ответа, которые обеспечивают почти тот же подход: 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/ есть пошаговые инструкции Например, я не просмотрел всю статью, но, опять же, он дает руководство по реализации того же подхода. –

+0

Ссылка - http://javahonk.com/create-maven-ear-project-eclipse/ tha tyou Опубликовано, это то, что я могу понять. Итак, прямо в начале, где он говорит - 'Создать родительский модуль: JavaHonkParent Нажмите« Файл »->« Создать »->« Другое »-> Maven -> Maven Project, затем нажмите« Далее »- самый первый шаг, он создает пустую' maven' проект и создание файла '.war' и файла' .jar' и последующего добавления их в родительский файл '.ear' - все звуки и кажется хорошим. Делает полный смысл. Однако он создал пустой проект и, возможно, позже работал над ним. У меня уже есть проект. Что мне с этим делать? – TheLuminor

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