java - 为什么我的 JAR 的 Maven 依赖项没有包含在我的 WAR 中?

标签 java xml eclipse maven

我有 2 个 Eclipse 项目:(1) my-library ,它构建 my-library-1.0.jar ;和 (2) my-deployable ,它构建 my-deployable-1.0.war .

my-librarypom.xml 中列出的依赖项的my-deployable .
my-library在其 pom.xml 中引用了 2 个依赖项(2 个 Apache commons JAR) .

my-library已注册到我的 Nexus,我可以检索它。

当我构建my-deployable-1.0.war时使用目标clean compile package , my-library-1.0.jar包含在WEB-INF\lib中文件夹,但它的 2 个依赖项未包含在预期的 WAR 中。我的印象是我不需要在 pom.xml 中明确指定它们的my-deployable因为它们已经列在 pom.xml 中的my-library .

为什么 my-library 没有依赖关系JAR 被包含在 my-deployable 中 build 时发生 war ?

pom.xml对于 my-library内容如下:

<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>
  <groupId>com.my</groupId>
  <artifactId>my-library</artifactId>
  <version>1.0</version>
  <name>My Library</name>
  <description>This is my library JAR. It will be included in my WAR.</description>
  <dependencies>
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.5</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-compress</artifactId>
      <version>1.17</version>
      <scope>compile</scope>
    </dependency>
  </dependencies>
  <build>
    <testResources>
      <testResource>
        <directory>src/test/resources</directory>
        <excludes>
          <exclude>**/*.java</exclude>
        </excludes>
      </testResource>
      <testResource>
        <directory>src/test/java</directory>
        <excludes>
          <exclude>**/*.java</exclude>
        </excludes>
      </testResource>
    </testResources>
  </build>
</project>

pom.xml对于 my-deployable内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.12.RELEASE</version>
        <relativePath/>
    </parent>
    <groupId>com.my</groupId>
    <artifactId>my-deployable</artifactId>
    <version>1.0</version>
    <packaging>war</packaging>
    <name>My Deployable</name>
    <description>A deployable WAR for Spring Boot that has a dependency of my-library</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-activemq</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>com.my</groupId>
            <artifactId>my-library</artifactId>
            <version>1.0</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

最佳答案

你的做法是正确的。他们注定要被卷入 war 。

您的依赖项及其范围看起来也正确。

我会检查 Maven 日志中的 [WARNING][ERROR]。也许您有 POM 丢失或无效的问题。

关于java - 为什么我的 JAR 的 Maven 依赖项没有包含在我的 WAR 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60012276/

相关文章:

android - 尝试在 mac os x 上使用 phonegap-2.8.1 创建 Android 项目时发生意外错误

java - 不使用访问修饰符和将访问修饰符与构造函数一起使用时会产生不同的结果

java - Android自定义对话框seekbar

javascript - jQuery 解析 XML : get an element with a specific attribute

javascript - 在 IE/FF 中使用 getElementsByTagName 时自定义标签的处理方式不同

java - Eclipse中Java工作集和Resource工作集的区别

java - "findLibrary returned null"在 Android 上连接到 deezer 的播放器模块时

java - doPost 和 getParameter()

java - 如何从 Slick2d 中的 Tiled 加载多边形对象?

c# - XML LINQ 查询不返回任何内容