【发布时间】:2011-03-15 15:35:20
【问题描述】:
我有一个 .jar,我想将它包含在使用 maven2 (pom.xml) 的 IDEA Web 应用程序项目中。
如何将 .jar 添加到不使用 maven 的项目中?
【问题讨论】:
标签: java maven-2 intellij-idea
我有一个 .jar,我想将它包含在使用 maven2 (pom.xml) 的 IDEA Web 应用程序项目中。
如何将 .jar 添加到不使用 maven 的项目中?
【问题讨论】:
标签: java maven-2 intellij-idea
尝试猜测问题是什么:
1) 你有一个带有 jar foo.jar 的 maven 项目 A
2) 您有一个非 Maven 项目 B,您想在其中使用相同的 jar(不使用 Maven)
3)你在窗户上?
如果这是真的,那么:
去c:\documents and settings\your_username\.m2\name_of_jar,抓取jar,粘贴到项目B的WEB-INF/lib目录下
【讨论】:
最简单的方法是使用maven:install-file将jar安装到你的本地仓库中,如下(从the docs偷来的:
mvn install:install-file -Dfile=path-to-non-maven.jar \
-DgroupId=some-id \
-DartifactId=some-artifact \
-Dversion=some-version \
-Dpackaging=jar
然后像任何其他依赖项一样将其添加到您的 POM 中。如果需要与多人共享,您可以考虑设置一个本地实例,例如 Nexus 或 Artifactory(我们在我工作的地方使用 Artifactory,效果很好)。
【讨论】:
maven install:install-file 非常适合将本地 JAR 添加到缓存中,但如果您在外部使用存储库(即 Archiva 或 Nexus),那么最好使用 " mvn deploy:deploy-file" - 该命令的类似参数。
仅在本地安装意味着如果您出于某种原因清除本地缓存(我已经多次这样做以解决本地缓存损坏的这个或那个问题),那么您也会丢失本地 JAR 并且需要记得重新添加一次。如果它通过 Nexus 或 Archiva 在本地 DSL 存储库中,那么您的状态很好 - 只需将生成的 groupId、artifactId 添加到 POM 中并继续。
【讨论】:
你基本上有三个选择:
使用 install:install-file 在本地存储库中安装 jar(请参阅 Guide to installing 3rd party JARs)。这非常简单明了,但这会使您的 POM 不可移植。如果您独自一人并且不打算分发您的 pom.xml,这可能是一个选择。
使用 deploy:deploy-file 在公司存储库中部署 jar。这当然是企业环境中的理想和首选方案。
如果您不使用公司存储库但仍在团队中工作,请setup a file based repository 并通过您的源存储库共享。
【讨论】:
Google addjars maven 插件是个好主意。这可以通过以下步骤来完成:
将所有依赖项添加到lib文件夹代码库。
将 google addjars 插件添加到<build>
<plugin>
<groupId>com.googlecode.addjars-maven-plugin</groupId>
<artifactId>addjars-maven-plugin</artifactId>
<version>1.0.5</version>
<executions>
<execution>
<goals>
<goal>add-jars</goal>
</goals>
<configuration>
<resources>
<resource>
<directory>${basedir}/lib</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
mvn compile 现在将创建一个本地 repo 并将所有 jars 添加为依赖项。然后mvn compile 将发挥魅力。
让idea解析依赖去module settings -> modules -> dependencies添加lib文件夹。
参考:https://code.google.com/archive/p/addjars-maven-plugin/issues
【讨论】: