Tworzysz nowy projekt. Nowy projekt to projekt zespołu EAR, który zawiera dwie zależności dla projektu EJB i projektu WAR.
Tak więc masz tutaj trzy projekty maven. Jeden EJB. Jedna wojna. Jedno UCHO, które ściąga obie części razem i tworzy ucho.
Deskryptory wdrożenia mogą być generowane przez maven lub umieszczane w katalogu zasobów w strukturze projektu EAR.
Wtyczka maven-ear-plugin jest tym, czego używasz do konfiguracji, a dokumentacja jest dobra, ale nie do końca jasna, jeśli nadal wiesz, jak ogólnie działa maven.
Na przykład możesz zrobić coś takiego:
<?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>com.mycompany</groupId>
<artifactId>myEar</artifactId>
<packaging>ear</packaging>
<name>My EAR</name>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<artifactId>maven-ear-plugin</artifactId>
<configuration>
<version>1.4</version>
<modules>
<webModule>
<groupId>com.mycompany</groupId>
<artifactId>myWar</artifactId>
<bundleFileName>myWarNameInTheEar.war</bundleFileName>
<contextRoot>/myWarConext</contextRoot>
</webModule>
<ejbModule>
<groupId>com.mycompany</groupId>
<artifactId>myEjb</artifactId>
<bundleFileName>myEjbNameInTheEar.jar</bundleFileName>
</ejbModule>
</modules>
<displayName>My Ear Name displayed in the App Server</displayName>
<!-- If I want maven to generate the application.xml, set this to true -->
<generateApplicationXml>true</generateApplicationXml>
</configuration>
</plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.3</version>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
<finalName>myEarName</finalName>
</build>
<!-- Define the versions of your ear components here -->
<dependencies>
<dependency>
<groupId>com.mycompany</groupId>
<artifactId>myWar</artifactId>
<version>1.0-SNAPSHOT</version>
<type>war</type>
</dependency>
<dependency>
<groupId>com.mycompany</groupId>
<artifactId>myEjb</artifactId>
<version>1.0-SNAPSHOT</version>
<type>ejb</type>
</dependency>
</dependencies>
</project>
type
jakoejb
<type>ejb</type>
'build.plugins.plugin.version' for org.apache.maven.plugins:maven-ear-plugin is missing
a'build.plugins.plugin.version' for org.apache.maven.plugins:maven-compiler-plugin is missing
, więc może chcesz zaktualizować inaczej wielką odpowiedźBardzo pomogło mi uruchomienie archetypu Mavena: wygeneruj cel i wybierz jeden z archetypów, z których niektóre wydają się być regularnie aktualizowane (w szczególności JBoss wydaje się być dobrze utrzymany).
Setki archetypów pojawiły się na ponumerowanej liście, z której można było wybrać (na razie 519!). Cel, wciąż działający, skłonił mnie do dokonania wyboru poprzez wprowadzenie liczby lub wpisanie ciągu wyszukiwania, np .:
Wprowadziłem ciąg wyszukiwania „ucho”, co zmniejszyło listę do zaledwie 8 pozycji (na dzień dzisiejszy):
Wybrałem „org.jboss.spec.archetypes: jboss-javaee6-ear-webapp” (wpisując w tym przykładzie opcję „5”).
Następnie cel poprosił mnie o wprowadzenie groupId, artifactId, nazw pakietów itp., A następnie wygenerował następującą dobrze udokumentowaną przykładową aplikację:
Po przeczytaniu czterech plików POM, które były dobrze skomentowane, miałem prawie wszystkie potrzebne informacje.
źródło
stworzyłem repozytorium github, aby pokazać, co uważam za dobrą (lub najlepsze praktyki) strukturę projektu startowego ...
https://github.com/StefanHeimberg/stackoverflow-1134894
kilka słów kluczowych:
Wyjście Mavena:
źródło
NetBeans IDE automatycznie definiuje strukturę, która jest prawie podobna do sugerowanej przez Patricka Garnera. Dla użytkowników NetBeans
Plik -> Nowy projekt -> Po lewej stronie wybierz Maven, a po prawej wybierz Maven Enterprise Application i naciśnij Dalej -> Pyta o nazwy projektów dla wojny, ejb i ustawień.
IDE automatycznie utworzy strukturę dla Ciebie.
źródło
To jest dobry przykład części maven-ear-plugin .
Możesz również sprawdzić archetypy mavena, które są dostępne jako przykład. Jeśli po prostu uruchomisz archetyp mvn: wygeneruj, otrzymasz listę dostępnych archetypów. Jeden z nich jest
źródło
maven-archetype-j2ee-simple
wydaje się niepotrzebnie skomplikowana struktura - szczególnie w przypadku modułów wewnątrz modułów i oddzielnych modułów do takich rzeczy, jak logowanie. Nie rozumiałem uzasadnienia tej strukturySzukałem od góry do dołu, aby znaleźć kompleksowy przykład kompletnej aplikacji opartej na uchu Mavena i ostatecznie się na to natknąłem . Instrukcje mówią, aby wybrać opcję 2 podczas uruchamiania przez CLI, ale do swoich celów użyj opcji 1.
źródło