如何让m2e-WTP与maven一起构建jar依赖项?

时间:2014-12-05 18:05:53

标签: java eclipse maven m2e-wtp

我正在使用eclipse luna,我有两个maven项目:一个Web应用程序和一个java库,它是Web应用程序的依赖项。

library 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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.test</groupId>
  <artifactId>library</artifactId>
  <verson>0.0.1-SNAPSHOT</version>
   <build>
    <plugins>
      <plugin>
        <artifactId>maven-jar-plugin</artifactId>
        <version>2.3.2</version>
        <configuration>
          <archive>
            <manifestEntries>
              <Dependencies>just a test</Dependencies>
            </manifestEntries>
          </archive>
        </configuration>
      </plugin>
    </plugins>
   </build>
</project>

webApp 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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.test</groupId>
  <artifactId>webapp</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  <dependencies>
    <dependency>
        <groupId>org.test</groupId>
        <artifactId>library</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </dependency>
  </dependencies>
</project>

现在,当我在网络服务器(jboss)上将战争部署为“Run as ...”时,会生成war文件,并将库的jar嵌入WEB-INF / lib下。 所以一切看起来都很好,除非它不是: 生成的jar不是由maven生成的,它错过了maven-jar-plugin上设置的任何配置(在这种情况下为Dependencies: just a test行)。

可能很明显,但如果我在库项目中使用“Run as Maven build”,jar:jarpackage目标都会构建一个带有预期清单的jar。

1 个答案:

答案 0 :(得分:0)

我已设法使用maven配置器将其归档。

  1. 将您提供的插件配置添加到pom.xml文件
  2. 将依赖项添加到webapp项目
  3. 右键单击maven webapp项目并转到Maven&gt;更新项目
  4. 选择webapp和库以获得良好衡量标准,然后单击“确定”
  5. 我使用Tomcat,但是当我清理服务器并检查webapp目录时,jar文件包含清单
  6. 如果这不起作用,请检查Eclipse生命周期映射中是否忽略jar:jar目标。

    1. 右键单击库项目,然后单击“属性”
    2. 转到:Maven&gt;生命周期映射
    3. 检查jar:jar插件执行,对我来说它实际上说是Mapping:忽略,Source:workspace所以我不得不更新我的eclipse配置
    4. 要从工作区的忽略列表中删除jar:jar:

      1. 工作区首选项&gt; Maven&gt;生命周期映射
      2. 打开工作区生命周期映射元数据
      3. 编辑xml以删除maven-jar-plugin插件执行
      4. 保存
      5. 点击重新加载工作区生命周期映射&#39;或重启eclipse。我不得不重新启动eclipse,因为它没有生效。
      6. 做一个Maven&gt;再次更新受影响项目的项目以确保
      7. 可以在pom.xml文件中忽略映射,在这种情况下,您将在pluginManagement下的library pom文件中找到一个忽略插件执行的部分。