我正在将一个组件打包到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>
但是。我本地的pom文件。m2存储库没有列出任何依赖项或有关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中查找group Id和其他字段的pom文件时,这似乎是一个不必要的步骤。
编辑:为了澄清这一点,虽然我可以访问myjar的源代码,但目标是myjar可以提供给没有源代码的第三方。我正在尝试确定步骤,以便在给定myjar时,第三方可以安装它和任何相关的依赖关系并在本地开发。最好是maven的命令行参数。
一般来说,应该使用Maven二进制存储库在系统之间移动文件,而不是安装文件。看看Archiva、Artifactory和Nexus。
您应该将mvn本地. m2目录视为缓存,而不是手动安装文件,否则您将发现不得不花费大量时间对存储库格式进行逆向工程。
我正在将一个组件打包到一个jar文件中,并试图将其安装到另一个系统中进行开发
从较高的层次来看,您似乎模糊了本地开发版本(快照)和发布版本(复制到另一台服务器的文件)的界限。
我想说,你会更高兴,或者只是在本地签出源代码并在那里进行构建,或者使用二进制repo在系统之间发布工件。
如果这是您的项目,您应该调用mvn install
。如果您试图上传第三方jar,而您需要它,但在Maven Central无法使用,那么您可以使用install:install file
。但是,您面临着一个已知的问题,请参见https://jira.codehaus.org/browse/MINSTALL-110
我使用的是Maven 3.1.1。当我运行时,我收到以下错误: 我的< code>pom.xml是:
我正在创建一个新的Karaf特性,它将包含几个包(jclouds)。我还有一个maven“superproject”(jclouds-all),它包含我需要的所有模块/包。 在定义特性时,是否可以只指定一个SuperProject的bundle,并自动解析所有具体的bundle,或者我需要在特性中列出所有的bundle?
当我试图导入依赖项时,我收到以下错误: 请帮帮我,我哪里错了? 事先谢谢你
If you have just checked out a package from version control, you will need to install those dependencies. If you are adding dependencies for your project, then those dependencies are automatically ins