我正在使用带有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,遇到同样的问题。
我想我已经涵盖了所有这些。很乐意提供一些建议,无法找到任何有关它的错误。
谢谢, 利奥尔
答案 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项目设置中禁用“来自工作区项目的依赖关系解析”。
致谢, 马库斯