java - Maven 安装文件未解决依赖关系

标签 java maven jar

我正在将组件打包到 jar 文件中,并尝试将其安装到另一个系统上进行开发。我正在使用 Maven 安装文件,如下所示(取自 https://maven.apache.org/plugins/maven-install-plugin/examples/custom-pom-installation.html ):

 mvn org.apache.maven.plugins:maven-install-plugin:2.5.2:install-file -Dfile=/home/user/myjar-1.2-SNAPSHOT.jar

Maven 报告 jar 已成功安装:

[INFO] Installing /home/user/myjar-1.2-SNAPSHOT.jar to /home/user/.m2/repository/com/myorg/myjar/1.2-SNAPSHOT/myjar-1.2-SNAPSHOT.jar
[INFO] Installing /tmp/mvninstall1212121212121212121.pom to /home/user/.m2/repository/com/myorg/myjar/1.2-SNAPSHOT/myjar-1.2-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 6.235s
[INFO] Finished at: Thu Dec 18 14:36:19 EST 2014
[INFO] Final Memory: 9M/93M
[INFO] ------------------------------------------------------------------------

而且,我看到 jar 和 pom 文件都放置在/home/user/.m2/repository/com/myorg/myjar/1.2-SNAPSHOT/中。但是,maven 没有解析和下载任何依赖项。从 myjar 中提取并检查 META-INF/maven/com.myorg/myjar/pom.xml,我看到了按预期列出的依赖项:

<dependencies>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>3.2.3.RELEASE</version>
  </dependency>
</dependencies>

但是我的本地 .m2 存储库中的 .pom 文件没有列出有关该 jar 的任何依赖项或其他信息。它包含的唯一信息是:

<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.myorg</groupId>
  <artifactId>myjar</artifactId>
  <version>1.2-SNAPSHOT</version>
  <description>POM was created from install:install-file</description>
</project>

尝试编写使用 myjar 组件的项目会导致以下异常:

java.lang.NoClassDefFoundError: org/springframework/context/ApplicationContext

这是有道理的,因为 maven 从来没有解决 myjar 的依赖关系。

我是否缺少一个标志或命令来让 Maven 解析这些依赖项?如果有必要,我可以将 jar 解压到临时目录并直接利用 pom 文件,但是当 maven 已经能够深入到 jar 中查找 groupId 和其他字段的 pom 文件时,这似乎是不必要的步骤。

编辑:为了明确这一点,虽然我可以访问 myjar 的源代码,但目标是可以将 myjar 提供给没有源代码的第三方。我正在尝试确定步骤,以便在提供 myjar 时,第三方可以安装它以及任何相关的依赖项并在本地进行开发。最好使用 Maven 的命令行参数。

最佳答案

如果这是您的项目,您应该调用mvn install。如果您尝试上传您需要的第三方 jar,但 Maven Central 上没有该 jar,那么您可以使用 install:install-file。但是,您面临一个已知问题,请参阅 https://jira.codehaus.org/browse/MINSTALL-110

关于java - Maven 安装文件未解决依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27554781/

相关文章:

java - Eclipse 看不到来自目标/生成源的类

Java 8 函数风格编程柯里化(Currying)和函数组合有什么区别

spring - Mapstruct 1.2.0 未在 springboot 2.0.0.M3 + lombok 中生成映射器类

java - 如何抑制 Maven "Unable to find resource"消息?

java - 将 jar 文件中的类从 url 加载到内存,然后从所有类中运行主类

java - 如何将 perl 脚本嵌入到 jar 文件中执行?

java - 当 clip.stop(); 时,AudioSystem 剪辑不会停止播放;正在运行

java - OrientDB SQL 查询到 Native Fluent API 调用

java - 从 jTextField Java 获取 SQL 表名称

java - 创建 .jar 和 FileNotFoundException