马文很棒。通过在配置中指定依赖包的版本,它主要让我远离 jar 依赖地狱pom
,并自动应用它们。它还通过 m2e 与 Eclipse 进行了很好的集成,因此可以在 IDE 中无缝运行。
这对于 Maven 全局已知的依赖项来说非常有用。但是,有时,有些库需要包含在 Maven 存储库中不可用的项目中。在这种情况下,我通常将它们添加到lib/
我项目中的目录中。只要它们在类路径中,就可以编译。
但是,问题是在导入项目时自动包含它们。长期以来,我一直在通过半生不熟的修复和黑客攻击来容忍这个问题。每次有人安装这个项目时,我都必须告诉他们手动将 jar 添加lib/
到他们的 Eclipse 构建路径中,以便所有错误都消失。类似于以下内容:
我正在寻找一种方法来自动化这个过程,这种方法既适用于mvn
命令行程序,也适用于 Eclipse:更多的是强调 Eclipse,因为有项目在导入时就可以编译是件好事。
我不想为此设置一个 repo 服务器,我也没有任何内部专有组件可以保证在本地设置任何东西。我只有一些开发人员不使用 Maven 的 jar 文件;我想和他们一起编译......我应该能够将它们包含在我的软件分发中,对吗?
我真的在寻找一种合理的方法来实现这一点,它也可以在 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 中运行涉及将以下关于生命周期映射的混乱添加到您的pom.xml
. 我什至不认为它被配置为实际向 Eclipse 构建路径添加任何内容。
<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>