1

我是 maven 新手,对于小问题感到抱歉:需要使用我的 artifact 版本而不是来自 repo 的版本来构建 maven 项目

更详细: 我从 github 下载了 jboss 源代码并使用 maven 3 构建它们。太棒了!我需要对名为“picketbox”的 jboss 依赖项进行一些更改。现在它是 jboss 的“pom.xml”中的一个工件。

我在 my_picketbox.jar 文件中构建了自己的纠察箱版本。我如何告诉 maven 使用我的 .jar 而不是来自 repo 的那个?

4

5 回答 5

3

也许我遗漏了一些东西,但是如果您明确地重命名了工件,那么只需在相关的 JBoss POM 文件中替换picketbox为。my_picketbox

<dependency>
    <groupId>...</groupId>
    <artifactId>my_picketbox</artifactId>
    <version>...</version>
</dependency>

当然,您可以通过mvn install'ing 确保您的工件在您的本地存储库中。

干杯,

于 2012-10-08T08:01:53.017 回答
2

我会使用 maven-install 插件安装 jar 文件。

http://maven.apache.org/plugins/maven-install-plugin/install-file-mojo.html

于 2012-10-08T08:04:17.937 回答
2

首先,将您的 Picketbox 版本安装到本地 Maven 存储库中。如果您的自定义版本是 Maven 项目,您可以通过运行

mvn install

如果您的自定义 Picketbox 版本不是 Maven 项目,请将 Jar 本身安装到您的本地 Maven 存储库中,如下所示:

mvn install:install-file -Dfile=my_picketbox.jar -DgroupId=org.picketbox -DartifactId=my_picketbox -Dversion=2.3 -Dpackaging=jar

然后通过将此代码段添加到您正在构建的 JBoss 项目的文件中来更改 JBoss 所依赖的 Picketbox 的版本pom.xml(用这个替换对 pocketbox 的现有依赖项):

<dependency>
    <groupId>org.picketbox</groupId>
    <artifactId>my_picketbox</artifactId>
    <version>2.3</version>
</dependency>
于 2012-10-08T08:18:51.217 回答
1
<dependency>
    <groupId>xxx</groupId>
    <artifactId>xxx</artifactId>
    <version>x.x.x</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/lib/xxxx.jar</systemPath>
</dependency>

这允许您引用未存储在本地而不是 Maven 中心的库。

于 2012-10-08T08:03:10.187 回答
0

Maven 采用 POM 文件中指定的内容;请注意,包括您所写的依赖项在内的 POM 可能会被埋得很深,甚至不会在您下载的源代码中。

在您的项目树中搜索有问题的工件并将其版本号替换为您的版本。如果这没有帮助,请按照 Nils 在另一个答案中所说的那样做,但请记住在原始版本中安装工件(您可能必须先在本地存储库中找到它并删除它)。

于 2012-10-08T08:08:03.137 回答