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

Lio*_*aga 5 eclipse maven maven-war-plugin

我正在将Eclipse Kepler SR2与m2e结合使用。我有一个依赖于jar的Web项目。

当我对目标程序包使用“运行方式-> Maven Build ...”并检查“检查工作区工件”时,目标中的lib文件夹将包含一个名为依赖项jar的文件夹,而不是jar本身。打包的war还包含一个文件夹而不是jar。但是,当使用m2e部署到tomcat时,将正确部署jar。

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

这是我的WAR pom:

<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>
Run Code Online (Sandbox Code Playgroud)

这是依赖项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>
Run Code Online (Sandbox Code Playgroud)

我已经看过了maven包目标的调试输出。当战争插件正在处理罐子时,它说

[DEBUG] Processing: loans-core-0.0.1-SNAPSHOT.jar
Run Code Online (Sandbox Code Playgroud)

而不表明该罐子已被复制。稍后在日志中,我看到:

adding directory WEB-INF/lib/loans-core-0.0.1-SNAPSHOT.jar/
Run Code Online (Sandbox Code Playgroud)

我已经尝试了嵌入式Maven(3.0.4)和外部Maven(3.0.5)。我的同事使用开普勒SR1,并遇到相同的问题。

我想我已经讲完了。希望得到一些建议,找不到有关它的任何已报告的错误。

谢谢,Lior

Chr*_*ken 1

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

mvn install:install-file -Dfile=my.jar -DgroupId=com.mycorp -DartifactId=my-jar -Dversion=1.0 -Dpackaging=jar
Run Code Online (Sandbox Code Playgroud)

然后将其定义为您的战争的 Maven 依赖项

  • 谢谢,但此解决方案不依赖于解决工作区依赖性。 (2认同)