Maven 2在开发的实验/快速和粗糙的模型阶段快把我逼疯了。

我有一个pom.xml文件,它定义了我想要使用的web-app框架的依赖关系,我可以从该文件快速生成启动项目。然而,有时我想链接到一个尚未定义pom.xml文件的第三方库,因此我不会手动为第三方库创建pom.xml文件并安装它,并将依赖项添加到我的pom.xml中,我只想告诉Maven:“除了我定义的依赖项之外,还包括/lib中的任何jar。”

似乎这应该是简单的,但如果是,我错过了一些东西。

任何关于如何做到这一点的建议都非常感谢。除此之外,如果有一种简单的方法将maven指向/lib目录,并轻松地创建一个pom.xml,将所有附带的jar映射到一个依赖项,然后我可以将其命名为/ install并链接到它,这也足够了。


当前回答

这并没有回答如何将它们添加到您的POM中,并且可能是一个无需动脑的问题,但只是将lib目录添加到您的类路径工作吗?我知道,当我需要一个外部jar,但又不想添加到Maven reppos时,我就会这样做。

希望这能有所帮助。

其他回答

您确实应该通过存储库获得适当的框架,并预先识别您的依赖项。使用系统作用域是人们经常犯的错误,因为他们“不关心依赖管理”。问题是,这样做最终会得到一个不正常的maven构建,无法显示正常情况下的maven。你最好遵循这样的方法。

尽管它并不完全适合您的问题,但我还是把它放在这里。我的要求是:

在线maven存储库中找不到的jar应该在SVN中。 如果一个开发人员添加了另一个库,其他开发人员不应该费心手动安装它们。 IDE(在我的例子中是NetBeans)应该能够找到源代码和javadocs来提供自动补全和帮助。

让我们先谈谈(3):只是将jar放在一个文件夹中,然后以某种方式将它们合并到最终的jar中,这在这里是行不通的,因为IDE无法理解这一点。这意味着必须正确安装所有的库。但是,我不想让每个人都使用“mvn安装文件”安装它。

在我的项目中,我需要元部件。开始吧:

创建一个新的maven项目(命名为“shared-libs”或类似的名称)。 下载元部件并将压缩文件解压到src/main/lib中。 文件夹doc/api包含javadocs。创建内容的压缩文件(doc/api/api.zip)。 像这样修改pom 构建项目并安装库。 将库作为依赖项添加到项目中,或者(如果在共享库项目中添加了依赖项)将共享库添加为依赖项,以一次性获得所有库。

每当你有一个新的库,只需添加一个新的执行,并告诉每个人重新构建项目(你可以用项目层次结构来改进这个过程)。

我找到了另一种方法来做到这一点,看看这里从Heroku的帖子

总结一下(抱歉有些复制和粘贴)

在根文件夹下创建一个repo目录:

yourproject
+- pom.xml
+- src
+- repo

运行这个命令将jar安装到本地的repo目录

mvn deploy:deploy-file -Durl=file:///path/to/yourproject/repo/ -Dfile=mylib-1.0.jar -DgroupId=com.example -DartifactId=mylib -Dpackaging=jar -Dversion=1.0

添加到你的pom.xml:

> <存储库 <!——其他存储库,如果有的话——> <库> <标识> project.local id > < / 项目<名称> < /名称> < url >文件:$ {project.basedir} /回购url > < / < /库> < /存储库> < >的依赖 com . example < / groupId < groupId > > < artifactId > mylib < / artifactId > 1.0 <版本> < /版本> < / >的依赖

这并没有回答如何将它们添加到您的POM中,并且可能是一个无需动脑的问题,但只是将lib目录添加到您的类路径工作吗?我知道,当我需要一个外部jar,但又不想添加到Maven reppos时,我就会这样做。

希望这能有所帮助。

要安装不在maven库中的第三方jar,使用maven-install-plugin。

步骤如下:

从源代码(网站)手动下载jar文件 创建一个文件夹,并将jar文件放在其中 运行以下命令在本地maven存储库中安装第三方jar

mvn install:install-file -dfile= -dgroupId= -dartifactId= -dversion= -dpackaging=

下面是我用于simmonsite log4j的示例

mvn安装:安装文件 -Dfile=/Users/athanka/git/MyProject/repo/log4j- rollingappender .jar -DgroupId=uk.org.simonsite -DartifactId=log4j- rollingappender -Dversion=20150607-2059 -Dpackaging=jar

在pom.xml中包括如下所示的依赖项 < >的依赖 < groupId > uk.org.simonsite < / groupId > < artifactId > log4j-rolling-appender < / artifactId > <版本> 20150607 - 2059 > < /版本 < / >的依赖 运行mvn clean install命令创建您的打包

以下是参考链接:

https://maven.apache.org/guides/mini/guide-3rd-party-jars-local.html