Maven和eclipse:将非Maven或外部jar添加到项目中的可靠方法?

Maven很棒。 它主要通过在pom配置中指定依赖包的版本来使我脱离jar依赖地狱,并自动应用它们。 它还通过m2e与Eclipse进行了很好的集成,因此可以在IDE中无缝地工作。

这对于Maven全局已知的依赖项来说非常有用。 但是,有时候,有些库需要包含在Maven存储库中不可用的项目中。 在这种情况下,我通常将它们添加到项目中的lib/目录中。 只要它们在类路径中就可以编译。

但是,问题是导入项目时会自动包含它们。 我一直在容忍这个问题,包括半生不熟的修复和黑客攻击太长时间了。 每次有人安装这个项目时,我都要告诉他们手动将lib/的jar添加到他们的Eclipse构建路径中,以便所有错误消失。 类似于以下内容:

在此处输入图像描述

我正在寻找一种方法来自动化这个过程,这种方式适用于mvn命令行程序和Eclipse:更多的是强调Eclipse,因为在导入它们时只需要编译的项目很好。

我不想为此设置一个repo服务器,也没有任何内部专有组件可以保证在本地设置任何东西。 我只有一些jar文件,开发人员不使用Maven; 我想和他们一起编译……我应该能够将它们包含在我的软件发行中,对吧?

我真的在寻找一种合理的方法来实现它,它也可以在Eclipse中运行而不用大惊小怪。 这是我发现有希望的一种解决方案 ,但肯定似乎没有这个问题的权威解决方案。 唯一接近的另一件事是maven-addjars-plugin ,它可以正常工作但只能在命令行上运行。 这个插件还不错,配置非常合理:

  com.googlecode.addjars-maven-plugin addjars-maven-plugin 1.0.5    add-jars     ${project.basedir}/lib/java-aws-mturk   ${project.basedir}/lib/not-in-maven       

但是,试图让它在Eclipse中运行需要将以下关于生命周期映射的混乱添加到你的pom.xml ,这是我从未开始工作的; 我甚至认为它没有配置为实际向Eclipse构建路径添加任何内容。

     org.eclipse.m2e lifecycle-mapping 1.0.0       com.googlecode.addjars-maven-plugin   addjars-maven-plugin   [1.0.5,)   add-jars             

1)您可以使用系统范围依赖性

   test x 1.0 system ${basedir}/lib/x.jar  

2)您可以将x.jar复制到本地maven存储库

库/测试/ X / 1.0 / X-1.0.jar

并添加依赖项

   test x 1.0  

您可以使用maven将文件从project \ lib文件夹安装到具有maven-install-plugin的本地存储库,如下所示。 我以前用JDBC驱动程序做过这个。 您可能必须为它创建一个单独的pom并使用mvn -f installdeps.pom或类似的东西执行它。

如果你可以让它玩得很好并且与诸如validate之类的生命周期绑定,那么你可以使用m2e插件与Eclipse,它可能会很好地直接从pom.xml读取依赖项并根据需要安装jar。当地的回购

    false org.apache.maven.plugins maven-install-plugin   Microsoft JDBC Driver File 1 install  install-file   lib/sqljdbc4.jar com.microsoft microsoft-jdbc-driver 4.0 jar    ojdbc5 install  install-file   lib/ojdbc5.jar com.oracle ojdbc5 11.1.2 jar     

在我看来,您可以使用Maven Resources Plugin为您执行此操作。 只需将资源复制绑定到适当的生命周期阶段(编译之前的阶段)。 您很可能需要调整maven-compiler-plugin,以便在编译时和运行时这些库都在类路径上。