Maven 和 eclipse:将非 Maven 或外部 jar 添加到项目中的可靠方法?
Maven很棒。它主要通过在配置中指定依赖包的版本来使我远离jar依赖地狱,并自动应用它们。它还通过m2e与Eclipse进行了很好的集成,因此可以在IDE中无缝地工作。pom
这对于 Maven 全球已知的依赖项来说都非常有用。但是,有时,有些库需要包含在 Maven 存储库中不可用的项目中。在这种情况下,我通常会将它们添加到项目中的目录中。只要它们在类路径中,那么事情就会编译。lib/
但是,问题是在导入项目时自动包含它们。长期以来,我一直在忍受半生不熟的修复和黑客来解决这个问题。每次有人安装这个项目时,我都必须告诉他们手动将jars添加到他们的Eclipse构建路径中,以便所有错误都消失。如下所示:lib/
我正在寻找一种方法来自动化这个过程,以一种既适用于命令行程序又可以使用Eclipse的方式:更强调Eclipse,因为当你导入它们时,拥有刚刚编译的项目是很好的。mvn
我不想为此设置存储库服务器,也没有任何内部专有组件可以保证在本地设置任何内容。我只是有一些jar文件,开发人员不使用Maven;我想和他们一起编译...我应该能够将它们包含在我的软件分发中,对吧?
我真的在寻找一种合理的方法来实现这一点,这种方法也可以在Eclipse中轻松使用。这是一个解决方案我发现有希望,但似乎肯定没有权威的解决方案来解决这个问题。唯一接近的另一件事是maven-addjars-plugin,它可以正常工作,但只能在命令行上工作。这个插件还不错,并且具有相当合理的配置:
<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>${project.basedir}/lib/java-aws-mturk</directory>
</resource>
<resource>
<directory>${project.basedir}/lib/not-in-maven</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
但是,试图让它在Eclipse中运行涉及将以下关于生命周期映射的混乱添加到您的,我从未开始工作过;我甚至不认为它被配置为实际向Eclipse构建路径添加任何内容。pom.xml
<pluginManagement>
<plugins>
<!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>
com.googlecode.addjars-maven-plugin
</groupId>
<artifactId>
addjars-maven-plugin
</artifactId>
<versionRange>
[1.0.5,)
</versionRange>
<goals>
<goal>add-jars</goal>
</goals>
</pluginExecutionFilter>
<action>
<execute />
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>