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

标签 eclipse maven maven-war-plugin

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

当我将“Run as -> Maven Build...”与目标包一起使用并选中“Check Workspace artifacts”时,目标中的 lib 文件夹包含一个具有依赖项 jar 名称的文件夹,而不是 jar 本身。打包后的war还包含一个文件夹而不是jar。但是,当使用m2e部署到tomcat时,jar部署正确。

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

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

这是依赖项 jar 的 Artifact 坐标:

<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,也遇到了同样的问题。

我想我已经涵盖了所有内容。很乐意提供一些建议,但找不到任何报告的错误。

谢谢, 利奥尔

最佳答案

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

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

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

关于具有 Maven 工作区依赖项的 Eclipse - 打包的 war 包含文件夹而不是 jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23390287/

相关文章:

java - 户外问题 : URI cannot be imported as it is not defined (with prefix

java - 如何使用 slf4j 登录公共(public)共享库?

android - 在 Android Studio 中从 SVN 获取所有库(非 Maven)项目

java - 将 spinnermodel 更改为 double 值,以便稍后在更改事件之外使用

java - 使用 Maven 将 XMLBeans 类添加到 Eclipse 中的类路径

java - 在 Eclipse Android 中导入 JAR (JAudioTagger)

java - 测试包中的类在 IntelliJ 中编译时不可用

java - 使用 Maven 构建 WAR 文件时重命名静态文件

java - 父 POM 的无效包装必须为 "pom"但为 "war"

maven - Maven中的 `warSourceExcludes`和 `packagingExcludes`有什么区别