-->

Maven和月食:一个可靠的方法,以非Maven的或外部的jar添加到项目?(Maven and e

2019-07-21 05:40发布

Maven是伟大的。 这主要是让我出去罐子依赖地狱的由指定依赖包的版本pom的配置,并自动应用。 它也有通过M2E与Eclipse大整合,这样的事情在一个IDE无缝协作。

这是在全球范围已知Maven依赖所有伟大。 然而,有时,有需要包括在一个项目,是不是在Maven回购可用的库。 在这种情况下,我通常将它们添加到lib/在我的项目目录。 只要他们在类路径中那么事情编译。

然而,问题是让他们自动包含导入项目时。 我已经容忍了这个问题,半生不熟的修复和黑客的时间太长了。 每当有人安装这个项目,我必须告诉他们手动添加的罐子在lib/自己的Eclipse构建路径,使所有的错误消失。 像下面这样:

我在寻找一种方法来与有工作的方式自动执行此过程mvn命令行程序和Eclipse:更多的Eclipse的重视,因为它是不错的,当你导入它们只是编译项目。

我不想就此成立回购服务器,也没有得到,将保证在当地设立任何任何内部专有组件。 我只是有一些jar文件,其中开发商不使用Maven; 我想和他们一起编译...我就应该能够将其包含在我的软件的分发,对不对?

我真的很为实现这一点,也将在Eclipse中没有什么大惊小怪的工作,以合理的方式。 这是一个解决方案 ,我发现有前途的,但肯定似乎并没有成为一个权威的解决这个问题。 来接近唯一的其他东西是Maven的addjars-插件 ,它的工作不错,但仅在命令行上。 这个插件是不是坏的,有一个非常合理的配置:

<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>

Answer 1:

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仓库为

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

并添加一个依赖作为

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


Answer 2:

你可以使用Maven从项目\ lib文件夹安装文件复制到本地回购与Maven的安装,插件如下。 我以前用JDBC驱动程序做到了这一点。 您可能需要为它创建一个单独的聚甲醛与MVN -f installdeps.pom或类似的东西执行。

如果你能得到它发挥不错,并与像验证什么的生命周期绑定,那么你可以使用与Eclipse的插件M2E以及也许会发挥不错,并直接从阅读的pom.xml依赖,并根据需要安装的罐子本地回购。

    <plugin>
        <!-- We dont want children attempting to install these jars to the repo. -->
        <inherited>false</inherited>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-install-plugin</artifactId>
        <executions>
            <execution>
                <id>Microsoft JDBC Driver File 1</id>
                <phase>install</phase>
                <goals>
                    <goal>install-file</goal>
                </goals>
                <configuration>
                    <file>lib/sqljdbc4.jar</file>
                    <groupId>com.microsoft</groupId>
                    <artifactId>microsoft-jdbc-driver</artifactId>
                    <version>4.0</version>
                    <packaging>jar</packaging>
                </configuration>
            </execution>
            <execution>
                <id>ojdbc5</id>
                <phase>install</phase>
                <goals>
                    <goal>install-file</goal>
                </goals>
                <configuration>
                    <file>lib/ojdbc5.jar</file>
                    <groupId>com.oracle</groupId>
                    <artifactId>ojdbc5</artifactId>
                    <version>11.1.2</version>
                    <packaging>jar</packaging>
                </configuration>
            </execution>
        </executions>
    </plugin>


Answer 3:

在我看来,你可以使用Maven的资源插件来为你做这个。 只是结合资源复制到适当的生命周期阶段(在编译之前的相位)。 你最有可能需要调整Maven的编译器插件,使这些库的类路径上编译和运行时的时候。



文章来源: Maven and eclipse: a reliable way to add non-Maven or external jars to a project?