使用maven-eclipse-plugin的Maven webapp不会生成<dependent-module>

Chr*_*wes 9 eclipse maven-2 eclipse-wtp

我使用eclipse:eclipse目标来生成Eclipse Project环境.部署工作正常.该目标为所有需要的依赖项创建var类路径条目.

有了m2eclipseMaven容器,它定义了一个WEB-INF/lib适合我的导出文件夹.但我不想依赖,m2eclipse所以我不再使用它了.

eclipse:eclipse目标生成的类路径条目没有这样的导出文件夹.

在使用WTP引导servlet容器时,它会将除库之外的所有资源和类发布到上下文中.

什么是缺少发布所需的库,或者如果没有m2eclipse集成则不可能?

环境

  • Eclipse 3.5 Java EE Galileo
  • Apache Maven 2.2.1(r801777; 2009-08-06 21:16:01 + 0200)
  • Java版本:1.6.0_14
  • m2eclipse的

maven-eclipse-plugin配置

    <plugin>
     <groupId>org.apache.maven.plugins</groupId>
     <artifactId>maven-eclipse-plugin</artifactId>
     <version>2.8</version>
     <configuration>
      <projectNameTemplate>someproject-[artifactId]</projectNameTemplate>
      <useProjectReferences>false</useProjectReferences>
      <downloadSources>false</downloadSources>
      <downloadJavadocs>false</downloadJavadocs>

      <wtpmanifest>true</wtpmanifest>
      <wtpversion>2.0</wtpversion>
      <wtpapplicationxml>true</wtpapplicationxml>
      <wtpContextName>someproject-[artifactId]</wtpContextName>

      <additionalProjectFacets>
        <jst.web>2.3</jst.web>
      </additionalProjectFacets>
     </configuration>
    </plugin>
Run Code Online (Sandbox Code Playgroud)

生成的文件

执行eclipse:eclipse目标后,依赖模块未在我生成的列表中列出.settings/org.eclipse.wst.common.component,因此在服务器启动时我会错过这些依赖项.

这就是我得到的:

<?xml version="1.0" encoding="UTF-8"?>
<project-modules id="moduleCoreId" project-version="1.5.0">
  <wb-module deploy-name="someproject-core">
    <wb-resource deploy-path="/" source-path="src/main/java"/>
    <wb-resource deploy-path="/" source-path="src/main/webapp"/>
    <wb-resource deploy-path="/" source-path="src/main/resources"/>
  </wb-module>
</project-modules>
Run Code Online (Sandbox Code Playgroud)

即将推出的读者更新

这里的问题是偏离packaging型,如果你使用maven-eclipse-plugin请验证使用<packaging>war</packaging>ear.

以下问题标志着我在一个maven pom中有两个构建生命周期的情况.

Pas*_*ent 4

发布所需的库缺少什么,或者如果没有 m2eclipse 集成就不可能实现?

我不确定是否理解这个问题。我已经使用maven-eclipse-pluginmaven webapps 很长一段时间并取得了成功。那么,在服务器上部署是否有效呢?该应用程序是否可用?你能澄清一下吗?

为了以防万一,我用你的插件配置对一个新创建的 web 应用程序进行了快速测试,看起来没问题。我刚刚删除了jst.java侧面并配置了maven-compiler-plugin

<plugin>
  <artifactId>maven-compiler-plugin</artifactId>
  <configuration>
    <target>1.5</target>
    <source>1.5</source>
  </configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)

我添加了对log4j. 然后,当我运行时mvn eclipse:eclipse,这就是我在生成的结果中得到的.settings/org.eclipse.wst.common.component

<project-modules id="moduleCoreId" project-version="2.0">
  <wb-module deploy-name="example-mvn-Q2713648">
    <property name="context-root" value="example-mvn-[artifactId]"/>
    <wb-resource deploy-path="/" source-path="src/main/webapp"/>
    <property name="java-output-path" value="/target/classes"/>
    <dependent-module archiveName="log4j-1.2.14.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/log4j/log4j/1.2.14/log4j-1.2.14.jar">
      <dependency-type>uses</dependency-type>
    </dependent-module>
    <wb-resource deploy-path="/WEB-INF/classes" source-path="src/main/resources"/>
  </wb-module>
</project-modules>
Run Code Online (Sandbox Code Playgroud)

依赖项log4j已存在并已发布。我错过了什么?


更新:我将提供的 pom 粘贴到我的war项目中,将其更改为使用 2.8 版本的 eclipse 插件,并src/main/webappresources元素中删除(它不是资源),这是我运行时得到的结果mvn eclipse:eclipse

<project-modules id="moduleCoreId" project-version="2.0">
  <wb-module deploy-name="example-mvn-Q2713648">
    <property name="context-root" value="example-mvn-[artifactId]"/>
    <wb-resource deploy-path="/" source-path="src/main/webapp"/>
    <property name="java-output-path" value="/target/classes"/>
    <dependent-module archiveName="hsqldb-1.8.0.10.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/hsqldb/hsqldb/1.8.0.10/hsqldb-1.8.0.10.jar">
      <dependency-type>uses</dependency-type>
    </dependent-module>
    <wb-resource deploy-path="/WEB-INF/classes" source-path="src/main/java"/>
    <wb-resource deploy-path="/WEB-INF/classes" source-path="src/main/resources"/>
  </wb-module>
</project-modules>
Run Code Online (Sandbox Code Playgroud)

对我来说看起来不错。

更新 2:正如我在对您自己的答案的评论中所写的那样,我认为 eclipse 插件不会为具有类型打包的项目生成动态 Web 模块jar。如果您更改包装war,它应该按预期运行。我很确定这就是你遇到麻烦的原因。