Was mir sehr geholfen hat, war die Ausführung des Maven-Archetyps: Ziel generieren und aus einem der Archetypen auswählen, von denen einige regelmäßig aktualisiert zu werden scheinen (insbesondere JBoss scheint gut gepflegt zu sein).
mvn archetype:generate
Hunderte von Archetypen erschienen in einer nummerierten Liste, aus der ausgewählt werden konnte (ab sofort 519!). Das noch laufende Ziel veranlasste mich, eine Auswahl zu treffen, indem ich eine Nummer oder eine Suchzeichenfolge eingab, z.
513: remote -> org.xwiki.commons:xwiki-commons-component-archetype
514: remote -> org.xwiki.rendering:xwiki-rendering-archetype-macro
515: remote -> org.zkoss:zk-archetype-component
516: remote -> org.zkoss:zk-archetype-webapp
517: remote -> ru.circumflex:circumflex-archetype (-)
518: remote -> se.vgregion.javg.maven.archetypes:javg-minimal-archetype (-)
Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains):
Ich habe die Suchzeichenfolge "ear" eingegeben, wodurch die Liste auf nur 8 Elemente reduziert wurde (Stand heute):
Choose archetype:
1: remote -> org.codehaus.mojo.archetypes:ear-j2ee14 (-)
2: remote -> org.codehaus.mojo.archetypes:ear-javaee6 (-)
3: remote -> org.codehaus.mojo.archetypes:ear-jee5 (-)
4: remote -> org.hibernate:hibernate-search-quickstart (-)
5: remote -> org.jboss.spec.archetypes:jboss-javaee6-ear-webapp
6: remote -> org.jboss.spec.archetypes:jboss-javaee6-webapp-ear-archetype
7: remote -> org.jboss.spec.archetypes:jboss-javaee6-webapp-ear-archetype-blank
8: remote -> org.ow2.weblab.tools.maven:weblab-archetype-searcher
Ich habe "org.jboss.spec.archetypes: jboss-javaee6-ear-webapp" ausgewählt (indem ich in diesem Beispiel die Auswahl "5" eingegeben habe).
Als nächstes forderte mich das Ziel auf, die Gruppen-ID, die Artefakt-ID, die Paketnamen usw. einzugeben, und es wurde die folgende gut dokumentierte Beispielanwendung generiert:
[pgarner@localhost Foo]$ tree
.
|-- Foo-ear
| `-- pom.xml
|-- Foo-ejb
| |-- pom.xml
| `-- src
| |-- main
| | |-- java
| | | `-- com
| | | `-- foo
| | | |-- controller
| | | | `-- MemberRegistration.java
| | | |-- data
| | | | `-- MemberListProducer.java
| | | |-- model
| | | | `-- Member.java
| | | `-- util
| | | `-- Resources.java
| | `-- resources
| | |-- import.sql
| | `-- META-INF
| | |-- beans.xml
| | `-- persistence.xml
| `-- test
| |-- java
| | `-- com
| | `-- foo
| | `-- test
| | `-- MemberRegistrationTest.java
| `-- resources
|-- Foo-web
| |-- pom.xml
| `-- src
| `-- main
| |-- java
| | `-- com
| | `-- foo
| | `-- rest
| | |-- JaxRsActivator.java
| | `-- MemberResourceRESTService.java
| `-- webapp
| |-- index.html
| |-- index.xhtml
| |-- resources
| | |-- css
| | | `-- screen.css
| | `-- gfx
| | |-- banner.png
| | `-- logo.png
| `-- WEB-INF
| |-- beans.xml
| |-- faces-config.xml
| `-- templates
| `-- default.xhtml
|-- pom.xml
`-- README.md
32 directories, 23 files
Nachdem ich die vier gut kommentierten POM-Dateien gelesen hatte, hatte ich so ziemlich alle Informationen, die ich brauchte.
./pom.xml
./Foo-ear/pom.xml
./Foo-ejb/pom.xml
./Foo-web/pom.xml