在实验/快速和肮脏的模拟开发阶段,Maven2让我发疯.
我有一个pom.xml文件定义了我想要使用的web-app框架的依赖项,我可以从该文件快速生成启动项目.但是,有时我想链接到尚未pom.xml定义文件的第三方库,所以不是pom.xml手动创建第三方库的文件并安装它,并将依赖项添加到我的pom.xml,我只是想告诉Maven:"除了我定义的依赖项,还要包含任何罐子/lib."
看起来这应该很简单,但如果是这样,我就会遗漏一些东西.
任何关于如何做到这一点的指针都非常感谢.除此之外,如果有一种简单的方法将maven指向一个/lib目录并轻松创建一个pom.xml所有封闭的jar映射到单个依赖项,然后我可以一次命名/安装和链接就足够了.
尝试使用Java 1.7的干净安装Apache Maven 3.1.0将Java库添加到本地Maven存储库.以下是添加Java归档文件的方法:
mvn install:install-file \
-DgroupId=net.sourceforge.ant4x \
-DartifactId=ant4x \
-Dversion=0.3.0 \
-Dfile=ant4x-0.3.0.jar \
-Dpackaging=jar
Run Code Online (Sandbox Code Playgroud)
这创建了以下目录结构:
$HOME/.m2/repository/net/sourceforge/ant4x/
??? 0.3.0
? ??? ant4x-0.3.0.jar.lastUpdated
? ??? ant4x-0.3.0.pom.lastUpdated
??? ant4x
??? 0.3.0
? ??? ant4x-0.3.0.jar
? ??? ant4x-0.3.0.pom
? ??? _remote.repositories
??? maven-metadata-local.xml
Run Code Online (Sandbox Code Playgroud)
项目的pom.xml文件引用依赖项目(上面的树),如下所示:
<properties>
<java-version>1.5</java-version>
<net.sourceforge.ant4x-version>0.3.0</net.sourceforge.ant4x-version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
...
<dependency>
<groupId>net.sourceforge</groupId>
<artifactId>ant4x</artifactId>
<version>${net.sourceforge.ant4x-version}</version>
<scope>provided</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
运行后mvn compile,返回以下错误(完全登录Pastebin):
[ERROR] Failed to execute goal on project ant4docbook: Could not resolve dependencies for project net.sourceforge:ant4docbook:jar:0.6-SNAPSHOT: Failure …Run Code Online (Sandbox Code Playgroud) 我有一个第三方 jar,它是我的项目的依赖项。由于业务限制,我无法访问企业或公司存储库,这绝对是我对此问题的偏好。但不管怎样,这个第三方 jar 是不公开的,所以它被包含在src\main\resources.
这是一个 Maven 项目,因此我将此第三方 jar 列为编译时依赖项,并在我的 pom 中包含一个构建插件,该插件将作为构建过程的一部分将第三方 jar 安装到我的本地存储库;我告诉 Mavenvalidate在构建生命周期的阶段执行这个目标,据我所知,这是在任何其他 Maven 阶段之前。
但是,当我运行 aclean install并清除我的本地存储库时,由于第三方 jar 无法在本地或 Maven 中央存储库中解析,因此构建失败。据我所知,我已经正确设置了 pom,我应该看到 Maven 在开始依赖解析之前尝试在本地安装第三方 jar。
问题是,如果在本地安装 jar 之前列出了依赖项,则构建将由于无法解决该依赖项而失败。如果我删除第三方 jar 声明并运行构建,在发生依赖项解析之后(这是它在清理之后所做的第一件事),但在任何其他阶段之前,它将在本地安装 jar 并且一切正常。但据我所知,它应该validate在收集和解析依赖项之前运行该阶段,因此 jar应该在 Maven 解析之前在本地安装。有什么想法或想法吗?
我的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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.company</groupId>
<artifactId>project</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>Web Services</name>
<description>This project will handle communication.</description>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<build>
<plugins>
<!-- This plugin installs the Evip …Run Code Online (Sandbox Code Playgroud)