java - Maven:我的项目有一个不在任何 Maven 仓库(系统范围)中的依赖项。它会包含在我的最终 jar 中吗?

标签 java maven-2 maven dependencies

所以我的 maven 项目依赖于一个不在任何 maven 存储库中的 jar。因此,我需要使用系统范围将此本地文件包含在我的 Maven 类路径中。问题是:当我构建我的最终 jar 来分发我的库时,我确实需要以某种方式包含该依赖项。可以提取这些类,然后将其与我的库类捆绑在一起,或者可以以某种方式将 jar 包含在我的库 jar 中。我什至不确定后者(jar inside jar)在 Java 中是否可行。

那么我该如何解决这个问题呢? Maven 会接受我的系统范围依赖并为我处理吗?我该怎么办?

谢谢!

最佳答案

不,不会。这些依赖仅用于编译和传递依赖解析。你的图书馆消费者也应该有这个 jar 。 但是,您可以使用 Assembly Plugin 将 jar 的类重新打包到您的 Artifact 中。

或者,标准方法:然后您将发布您的 Artifact ,您将创建一个用于部署的公共(public)存储库。您也可以在其中部署 jar。

UDPATE:为阴影插件添加示例(而不是程序集)

  <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>1.4</version>
        <executions>
          <execution>
                <phase>package</phase>
                <goals>
                  <goal>shade</goal>
                </goals>
                <configuration>
                  <artifactSet>
                        <includes>
                          <include>legacy-jar.groupId:legacyJar</include>
                        </includes>
                  </artifactSet>
                </configuration>
          </execution>
        </executions>
  </plugin>

关于java - Maven:我的项目有一个不在任何 Maven 仓库(系统范围)中的依赖项。它会包含在我的最终 jar 中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7663405/

相关文章:

java - 在java中使用正则表达式提取html语法中两个单词之间的字符串

java - 这是没有 volatile 和同步开销的更好版本的 Double Check Locking

java - 使用 maven 构建后未找到 src/main/resources 中的资源

java - 在运行时获取 Maven 工件版本

java - 需要在Maven中下载Spring需要的依赖吗?

java - spring 中的单例可以有静态方法吗?

java - maven编译失败

java - Maven中Jetty插件的企业用途是什么?

java - 有没有一种方法可以将依赖项仅应用于一个包?

java - 线程中出现异常 "dispatcher-event-loop-1"java.lang.OutOfMemoryError : Java heap space