我有一个工作或大部分工作的POM,它可以获取所有我正在编写Facelets应用程序的JAR。我正在使用m2eclipse。当我导入新Maven创建的应用程序时,它会干净地或多或少地按预期进行,但是,它不像动态Web项目那样,当我尝试运行它时,它不提供Run As - >在服务器上运行选项。
我已经研究了其他可以在服务器上运行的Maven生成的Eclipse项目,这些项目可以工作(但是没有设置我想要的JAR组合)。例如,这个可行,但它没有我想要的JAR:
mvn archetype:generate -DarchetypeArtifactId = maven-archetype-webapp \ -DgroupId = package-name -DartifactId = project-name
我是否需要创建一个自定义原型artifactId模仿 ...- DarchetypeArtifactId = maven-archetype-webapp ... 我在上面的命令中看到,如果是的话,如何?
或者它仅仅是该原型设置的文件系统的功能?我看到我生成的项目(webapp1)......
webapp1 |-- src | `-- main | |-- java | |-- resources | `-- webapp | `-- WEB-INF `-- target `-- classes`
...的内容与使用 maven-archetype-webapp 生成的内容不同,但我不知道如何强制 mvn eclipse:clean eclipse:eclipse to生成它(或者是否告诉Eclipse这是一个Web应用程序,它应该设置为Run As - > Run on Server)。
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。这是我的 pom.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>
答案 0 :(得分:7)
我遇到了完全相同的问题。现有的原型都不符合我的需求。如果我从自定义原型创建(来自eclipse)项目,它将不会成为动态Web项目。
如果你运行mvn -Dwtpversion = 2.0 eclipse:eclipse它会再添加你不需要的各种东西。
所以经过调查,我最终发现了什么侮辱了“动态网络项目”。它是.setjects目录中的一堆目录和文件以及.project中的条目。
所以你需要做的是以下几点:
1.)在eclipse中创建一个空的(非maven)动态Web项目
2.)在不添加任何文件或任何其他更改的情况下,在文件系统上检查eclipse创建的以下文件(相对于项目目录):
的.project
.settings / org.eclipse.jdt.core.prefs
.settings / org.eclipse.wst.common.project.facet.core.prefs.xml
.settings / org.eclipse.wst.jsdt.ui.superType.name
.settings / org.eclipse.jst.jsp.core.prefs
.settings / org.eclipse.wst.common.project.facet.core.xml的
.settings / org.eclipse.wst.common.component
.settings / org.eclipse.wst.jsdt.ui.superType.container
3。)将这些文件复制到archetype-resources目录中,以获取自定义的archetime
4.)编辑并概括复制的文件(用$ {artifactId}替换实际项目名称等...
5.)在您的archetype-metadata.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。)Voila!安装并部署您的原型,然后重试。它对我有用。
答案 1 :(得分:7)
如何在archetype-resources / pom.xml中配置maven-eclipse-plugin呢?
<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中创建一个支持web的项目
答案 2 :(得分:2)
要为Eclipse创建Dynamic Web Project,您需要执行以下操作:
1)使用以下内容生成项目:
mvn archetype:generate&gt;可选参数,例如-Dfilter = webapp-j2ee&lt;
这将帮助您以交互模式生成maven项目,并且您不必为artifactId,groupId等键入选项。
注意:它仍然可能不是动态Web项目,在我的情况下,它永远不会...... (我想基本上它取决于你使用过的archetype-artifactId,而且我还没有找到一个能够为一个基本的j2ee应用生成一个动态Web模块的应用程序,它只使用jsp,servlet,而且仅此而已)
2)现在要为eclipse生成项目文件,请使用以下命令:
mvn -Dwtpversion = 2.0 eclipse:eclipse
这将生成一个项目文件,该文件将具有所需的项目构面。因此,当您在Eclipse IDE中导入它时,它将是一个“动态Web模块”。
注意:现在,如果您正在寻找特定版本的“动态Web模块”,那么您需要配置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(如本例所示),则将选择动态Web模块2.5。否则,编译器插件1.4将为2.4,依此类推。