具有maven工作区依赖性的Eclipse - 打包的war包含文件夹而不是jar

时间:2014-04-30 14:03:07

标签: eclipse maven maven-war-plugin

我正在使用带有m2e的Eclipse Kepler SR2。 我有一个依赖于jar的web项目。

当我使用"运行为 - > Maven Build ..."目标包和"检查工作区工件"检查,然后目标中的lib文件夹包含一个文件夹,其中包含依赖jar的名称,而不是jar本身。打包的战争还包含一个文件夹而不是一个jar。但是,当使用m2e部署到tomcat时,jar会正确部署。

我使用的是maven-war-plugin版本2.4。

这是我的战争:

<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>
  <parent>
    <groupId>com.modelity.loans</groupId>
    <artifactId>loans-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <artifactId>loans-web</artifactId>
  <packaging>war</packaging>

  <dependencies>
    <dependency>
        <groupId>com.modelity.loans</groupId>
        <artifactId>loans-core</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <type>jar</type>
    </dependency>
  </dependencies>


  <build>
      <plugins>
            <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.4</version>
        </plugin>
      </plugins>
  </build>
</project>

这是依赖jar的工件坐标:

<parent>
    <groupId>com.modelity.loans</groupId>
    <artifactId>loans-lib</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>loans-core</artifactId>
<packaging>jar</packaging>

我已经查看了maven包目标的调试输出。当war插件正在处理jar时,它说

[DEBUG] Processing: loans-core-0.0.1-SNAPSHOT.jar

未指明jar已被复制。 稍后在日志中我看到:

adding directory WEB-INF/lib/loans-core-0.0.1-SNAPSHOT.jar/

我已尝试过嵌入式maven(3.0.4)和外部maven(3.0.5)。 我的同事使用kepler SR1,遇到同样的问题。

我想我已经涵盖了所有这些。很乐意提供一些建议,无法找到任何有关它的错误。

谢谢, 利奥尔

2 个答案:

答案 0 :(得分:1)

尝试将jar安装为自己的maven控制工件:

mvn install:install-file -Dfile=my.jar -DgroupId=com.mycorp -DartifactId=my-jar -Dversion=1.0 -Dpackaging=jar

然后将其定义为战争的maven依赖

答案 1 :(得分:0)

现在我们有2018年,但该问题在Eclipse v2018-09中仍然存在。工作区中存在的Maven依赖关系被分解到WEB-INF / lib文件夹中。

找到了有关此行为的旧错误报告https://issues.jboss.org/browse/JBIDE-22157

解决方案是在maven项目设置中禁用“来自工作区项目的依赖关系解析”。

screenshot of project properties

致谢, 马库斯