5

我将 Eclipse Kepler SR2 与 m2e 一起使用。我有一个依赖于 jar 的 web 项目。

当我对目标包使用“Run as -> Maven Build...”并选中“Check Workspace artifacts”时,目标中的 lib 文件夹包含一个名为依赖 jar 的文件夹,而不是 jar 本身。打包的战争还包含一个文件夹而不是一个 jar。但是,使用 m2e 部署到 tomcat 时,jar 已正确部署。

我使用 maven-war-plugin 2.4 版。

这是我的战争 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>

这是依赖 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 包目标的调试输出。当战争插件正在处理罐子时,它说

[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)。我的同事使用开普勒 SR1,并遇到同样的问题。

我想我已经涵盖了所有内容。很高兴得到一些建议,找不到任何关于它的报告错误。

谢谢,里奥

4

2 回答 2

1

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

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

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

于 2014-04-30T14:13:24.763 回答
0

现在我们有 2018 年,问题仍然存在于 eclipse v2018-09 中。工作空间中存在的 Maven 依赖项被分解到 WEB-INF/lib 文件夹中。

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

解决方案是在 Maven 项目设置中禁用“工作空间项目的依赖解析”。

项目属性截图

问候,马库斯

于 2018-11-12T15:30:18.730 回答