2014-12-05 117 views
2

我使用eclipse luna,我有2个maven项目:一个web应用程序和一个java库,它是web应用程序的一个依赖项。如何让m2e-WTP与maven建立jar依赖关系?

库的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的)我的战争 '运行方式...' 时,生成war文件,并将库的jar嵌入到WEB-INF/lib下。 所以一切看起来都很好,除非它不是: 生成的jar不是由maven生成的,它会丢失在maven-jar-plugin(在这种情况下为Dependencies: just a test行)上设置的任何配置。

可能很明显,但如果我在库项目中使用'Run as Maven build',jar:jarpackage目标会生成一个具有预期清单的jar。

+0

这可能是微不足道的,但哪个版本在第一个pom中有jar?你确定它是0.0.1-SNAPSHOT? – Ria 2015-03-24 18:37:35

+0

是的,以及我想清除POM内容,但它不是那么大,所以我现在复制粘贴整个文件内容。 – Ghetolay 2015-03-25 11:29:26

+0

@Ghetolay我不清楚你的问题。你是说如果你运行POM文件为“Run as Maven build”,那么一切正常。但是,如果你在项目中运行它作为'运行为...'网络服务器,它就不好。 – 2015-03-26 10:38:42

回答

0

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

  1. 添加您提供给pom.xml文件
  2. 插件配置的依赖添加到webapp项目
  3. 右键点击maven的webapp项目,去的Maven>更新项目
  4. 选择无论是Web应用程序和良好的措施库,然后单击确定
  5. 我使用Tomcat,但是当我清理服务器并检查Web应用程序目录,jar文件包括清单

如果这不起作用,请检查jar生命周期映射中是否忽略jar:jar目标。

  1. 右键单击库项目,然后单击属性
  2. 转到:Maven的>生命周期映射
  3. 检查罐子:罐子插件运行,对我来说却居然说出映射:忽略,来源:工作区所以我不得不更新我的Eclipse配置

要删除的jar:从忽视列表罐子它您的工作空间:

  1. 工作区首选项>的Maven>生命周期映象
  2. 打开工作空间的生命周期的映射元数据
  3. 编辑XML以除去行家-JAR-plugin插件执行
  4. 保存
  5. 点击“刷新工作区的生命周期映射”或重新启动蚀。我不得不重启eclipse,因为这没有生效。
  6. 再次请在受影响的项目,一个Maven>更新项目,以确保

映射可以在POM被忽略。xml文件,在这种情况下,您会在pluginManagement下的库pom文件中找到一个忽略插件执行的部分。

+0

jar:jar的映射被设置为'configurator',不知道它是什么意思。此外,我无法找到任何关于“生命周期映射元数据”xml文件的文档,所以我不知道如何将其从'configurator'更改为'execute'。 – Ghetolay 2015-03-25 12:37:02

+0

好吧,我正要尝试使用'lifecycle-mapping-metadata.xml'中的一些内容,它似乎工作。即使当我恢复了我的改变。这可能是一些临时性的bug,通过一些升级修复。我稍后会做更多的测试。 – Ghetolay 2015-03-25 13:06:25

+0

@Ghetolay'配置器'意味着你必须做一个Maven>更新项目,所以你可能以前没有做过,现在你有。 Maven> Update项目同步pom文件和eclipse项目之间的配置。 – 3urdoch 2015-03-25 13:18:14