草庐IT

java - Maven和eclipse : a reliable way to add non-Maven or external jars to a project?

coder 2023-05-16 原文

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

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

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

我正在寻找一种方法来自动化这个过程,这种方法可以与 mvn 命令行程序和 Eclipse 一起使用:更多地强调 Eclipse,因为拥有这样的项目真是太好了导入时编译。

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

我真的在寻找一种合理的方法来实现这一点,它也可以在 Eclipse 中轻松工作。 This is one solution我发现很有希望,但是 这个问题似乎没有权威的解决方案。唯一接近的另一件事是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>

最佳答案

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

    <dependency>
        <groupId>test</groupId>
        <artifactId>x</artifactId>
        <version>1.0</version>
        <scope>system</scope>
        <systemPath>${basedir}/lib/x.jar</systemPath>
    </dependency>

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

repository/test/x/1.0/x-1.0.jar

并添加一个依赖项

    <dependency>
        <groupId>test</groupId>
        <artifactId>x</artifactId>
        <version>1.0</version>
    </dependency>

关于java - Maven和eclipse : a reliable way to add non-Maven or external jars to a project?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15305679/

有关java - Maven和eclipse : a reliable way to add non-Maven or external jars to a project?的更多相关文章

随机推荐