Как создать архетип веб-приложения Maven для Eclipse?
у меня есть рабочий или в основном рабочий POM, который извлекает все и точно только банки, которые меня интересуют для написания приложения Facelets. Я использую m2eclipse. Когда я импортирую недавно созданное приложение Maven, оно приходит чисто и более или менее как ожидалось, однако, это не похоже на динамический веб-проект в том, что, когда я пытаюсь запустить его, он не предлагает опцию Run As -> Run on Server.
Я изучил другие проекты Eclipse, созданные Maven, которые работают (но не настраиваются с комбинацией JAR я хочу) в том смысле, что они могут быть запущены на сервере. Например, этот работает, но у него нет банок, которые я хочу:
mvn архетип: generate-DarchetypeArtifactId=maven-архетип-webapp - DgroupId=пакет-имя-DartifactId=проект-Имя
мне нужно создать пользовательский архетип artifactId в имитации ...- DarchetypeArtifactId=maven-архетип-webapp... Я вижу в команде выше и, если да, то как?
или это просто функция файловой системы, созданной этим архетипом? Я вижу, что проект, который я создал (webapp1)...
webapp1 |-- src | `-- main | |-- java | |-- resources | `-- webapp | `-- WEB-INF `-- target `-- classes`
... имеет другой контент, чем один, созданный с помощью maven-архетип-webapp, но я не знаю, как заставить mvn eclipse: чистое затмение: затмение чтобы сгенерировать это (или это то, что говорит Eclipse, это веб-приложение, и оно должно быть настроено для запуска как -> Run on Сервер.)
simpleWeb |-- src | `-- main | |-- java | | `-- com | | `-- mytutorial | |-- resources | | `-- com | | `-- mytutorial | `-- webapp | |-- META-INF | |-- pages | `-- WEB-INF `-- target |-- classes | `-- com | `-- mytutorial |-- maven-archiver |-- META-INF | `-- maven | `-- com.mytutorial | `-- simpleWeb |-- pages |-- simpleWeb | |-- META-INF | |-- pages | `-- WEB-INF | |-- classes | | `-- com | | `-- mytutorial | `-- lib |-- surefire |-- test-classes `-- WEB-INF |-- classes | `-- com | `-- mytutorial `-- lib
Русс
P. S. Вот мой пом.в XML:
<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.etretatlogiciels.webapp1</groupId>
<artifactId>webapp1</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>webapp1 Maven Webapp</name>
<url>http://maven.apache.org</url>
<properties>
<commons-beanutils-version> 1.8.3 </commons-beanutils-version>
<commons-codec-version> 1.4 </commons-codec-version>
<commons-collections-version> 3.2.1 </commons-collections-version>
<commons-digester-version> 2.1 </commons-digester-version>
<commons-discovery-version> 0.4 </commons-discovery-version>
<commons-logging-version> 1.1.1 </commons-logging-version>
<jsf-facelets-version> 1.1.15 </jsf-facelets-version>
<myfaces-version> 2.0.4 </myfaces-version>
<richfaces-version> 3.3.3.Final </richfaces-version>
</properties>
<pluginRepositories>
<pluginRepository>
<id>jboss-public-repository-group</id>
<name>JBoss Public Maven Repository Group</name>
<url>https://repository.jboss.org/nexus/content/groups/public-jboss/</url>
<layout>default</layout>
<releases>
<enabled>true</enabled>
<updatePolicy>never</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>never</updatePolicy>
</snapshots>
</pluginRepository>
</pluginRepositories>
<dependencies>
<!-- Apache Commons -->
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>${commons-beanutils-version}</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>${commons-codec-version}</version>
</dependency>
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>${commons-collections-version}</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>commons-digester</groupId>
<artifactId>commons-digester</artifactId>
<version>${commons-digester-version}</version>
</dependency>
<dependency>
<groupId>commons-discovery</groupId>
<artifactId>commons-discovery</artifactId>
<version>${commons-discovery-version}</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>${commons-logging-version}</version>
</dependency>
<!-- Facelets -->
<dependency>
<groupId>com.sun.facelets</groupId>
<artifactId>jsf-facelets</artifactId>
<version>${jsf-facelets-version}</version>
</dependency>
<!-- MyFaces -->
<dependency>
<groupId>org.apache.myfaces.core</groupId>
<artifactId>myfaces-api</artifactId>
<version>${myfaces-version}</version>
</dependency>
<dependency>
<groupId>org.apache.myfaces.core</groupId>
<artifactId>myfaces-impl</artifactId>
<version>${myfaces-version}</version>
</dependency>
<!-- RichFaces -->
<dependency>
<groupId>org.richfaces.framework</groupId>
<artifactId>richfaces-api-jsf2</artifactId>
<version>${richfaces-version}</version>
</dependency>
<dependency>
<groupId>org.richfaces.framework</groupId>
<artifactId>richfaces-impl-jsf2</artifactId>
<version>${richfaces-version}</version>
</dependency>
<dependency>
<groupId>org.richfaces.framework</groupId>
<artifactId>richfaces-ui-jsf2</artifactId>
<version>${richfaces-version}</version>
</dependency>
<!-- JUnit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>webapp1</finalName>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.java</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.0.2</version>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>richfaces</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<repositories>
<repository>
<id>maven2.repository</id>
<name>Repository for Maven by Maven</name>
<url>http://repo2.maven.org/maven2</url>
<layout>default</layout>
<releases>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</releases>
</repository>
<repository>
<id>maven2-repository.dev.java.net</id>
<name>Java.net Repository for Maven</name>
<url>http://download.java.net/maven/1</url>
<layout>legacy</layout>
<releases>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</releases>
</repository>
<repository>
<id>JBoss Repository Old</id>
<name>Repository for Maven by JBoss</name>
<url>http://repository.jboss.org/maven2</url>
<layout>default</layout>
<releases>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</releases>
</repository>
<repository>
<id>JBoss Repository Nexus</id>
<name>Repository for Maven by JBoss</name>
<url>http://repository.jboss.org/nexus/content/groups/public-jboss</url>
<layout>default</layout>
<releases>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</releases>
</repository>
</repositories>
</profile>
</profiles>
</project>
3 ответов
У меня была точно такая же проблема. Ни один из существующих архетипов не соответствовал моим потребностям. Если бы я создал (из eclipse) проект из пользовательского архетипа, он не стал бы динамическим веб-проектом.
Если вы запустите mvn-Dwtpversion=2.0 eclipse: eclipse, он снова добавит все, что вам не нужно.
Поэтому после расследования я в конце концов узнал, что побеждает "динамический веб-проект". Это куча каталогов и файлов в .настройки каталога и записей .проект.
Так что тебе нужно? сделайте следующее:
1.) создайте пустой (не maven) динамический веб-проект из eclipse.
2.) Без добавления каких-либо файлов или каких-либо других изменений проверьте в файловой системе следующие файлы, созданные eclipse (относительно проекта directory):
.проект
.настройки/орг.затмение.JDT, предназначенным.ядро.преф
.настройки/орг.затмение.wst.общий.проект.грань.ядро.префы.в XML
- ... настройки / org.затмение.wst.jsdt.ui.супертип.имя
.настройки/орг.затмение.jst.JSP-страница.ядро.преф
.настройки/орг.затмение.wst.общий.проект.грань.ядро.в XML
.настройки/орг.затмение.wst.общий.компонент
.настройки/орг.затмение.wst.jsdt.пользовательский интерфейс.супертип.контейнер
3.) Скопируйте эти файлы в archetype - каталог ресурсов для пользовательского archetime
4.) Редактировать и обобщать скопированные файлы (заменяя фактические имена проектов на ${artifactId} и т. д...
5.) В вашем архетипе-метаданные.XML-файл добавить:
<fileSet encoding="UTF-8" filtered="true">
<directory></directory>
<includes>
<include>.project</include>
</includes>
</fileSet>
<fileSet encoding="UTF-8" filtered="true">
<directory>.settings</directory>
</fileSet>
без этого maven не будет загружать файлы, начинающиеся с ".*"
6. Вуаля!. Установите и разверните свой архетип и повторите попытку. У меня получилось.
Как насчет настройки Maven-eclipse-plugin в вашем archetype-resources / pom.в XML?
<build>
<finalName>archetype-javaee5-webapp</finalName>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-eclipse-plugin</artifactId>
<version>2.9</version>
<configuration>
<wtpversion>2.0</wtpversion>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
это создаст веб - проект в eclipse
чтобы создать динамический веб-проект для Eclipse, вам нужно сделать следующее:
1) создать проект, используя что-то вроде :
mvn archetype: generate >необязательные аргументы, такие как-Dfilter=webapp-j2ee
Это поможет вам в создании проекта maven в интерактивном режиме, и вам не придется вводить параметры artifactId, groupId и т. д.
Примечание: это все еще может быть не динамический веб-проект, в моем случае это никогда не так... (Я думаю, в основном это зависит от архетипа-artifactId, который вы использовали, и я не нашел тот, который будет генерировать динамический веб-модуль сам по себе для базового приложения j2ee, которое будет использовать только JSP, сервлета и ничего больше)
2) Теперь, чтобы создать файл проекта для eclipse, используйте следующую команду:
mvn-Dwtpversion=2.0 eclipse: eclipse
это создаст файл проекта, который будет иметь необходимый набор фасетов проекта. Так когда? вы импортируете его в свою Eclipse IDE, это будет "динамический веб-модуль".
Примечание: теперь, если вы ищете определенную версию "динамического веб-модуля", вам нужно настроить POM. Версия зависит от следующего тега в теге сборки:
<code>
<build>
......
<plugins>
........
<plugin>
<groupId> org.apache.maven.plugins </groupId>
<artifactId> maven-compiler-plugin </artifactId>
<version> 2.3.2 </version>
<configuration>
<source> 1.6 </source>
<target> 1.6 </target>
</configuration>
</plugin>
.........
</plugins>
.......
</build>
</code>
теперь, если источник и цель установлены в 1.6 (как в этом случае), то будет выбран динамический веб-модуль 2.5. В противном случае, это будет 2.4 для компилятора-плагин 1.4 и так далее.