Maven 2在开发的实验/快速和粗糙的模型阶段快把我逼疯了。

我有一个pom.xml文件,它定义了我想要使用的web-app框架的依赖关系,我可以从该文件快速生成启动项目。然而,有时我想链接到一个尚未定义pom.xml文件的第三方库,因此我不会手动为第三方库创建pom.xml文件并安装它,并将依赖项添加到我的pom.xml中,我只想告诉Maven:“除了我定义的依赖项之外,还包括/lib中的任何jar。”

似乎这应该是简单的,但如果是,我错过了一些东西。

任何关于如何做到这一点的建议都非常感谢。除此之外,如果有一种简单的方法将maven指向/lib目录,并轻松地创建一个pom.xml,将所有附带的jar映射到一个依赖项,然后我可以将其命名为/ install并链接到它,这也足够了。


当前回答

仅用于丢弃代码

设置scope == system,只需要创建groupId, artifactId和version

<dependency>
    <groupId>org.swinglabs</groupId>
    <artifactId>swingx</artifactId>
    <version>0.9.2</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/lib/swingx-0.9.3.jar</systemPath>
</dependency>

注意:系统依赖关系不会复制到生成的jar/war中 (参见如何在使用maven构建的war中包含系统依赖项)

其他回答

这是我们添加或安装本地jar的方法

    <dependency>
        <groupId>org.example</groupId>
        <artifactId>iamajar</artifactId>
        <version>1.0</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/lib/iamajar.jar</systemPath>
    </dependency>

我给出了一些默认的groupId和artifactId,因为它们是强制性的:)

一个快速的批量解决方案(基于Alex的回答):

libs.bat

@ECHO OFF
FOR %%I IN (*.jar) DO (
echo ^<dependency^>
echo ^<groupId^>local.dummy^</groupId^>
echo ^<artifactId^>%%I^</artifactId^>
echo ^<version^>0.0.1^</version^>
echo ^<scope^>system^</scope^>
echo ^<systemPath^>${project.basedir}/lib/%%I^</systemPath^>
echo ^</dependency^>
)

执行如下:libs.bat > libs.txt。 然后打开lib .txt并将其内容复制为依赖项。

在我的例子中,我只需要库来编译我的代码,而这个解决方案是实现这一目的的最佳方案。

要安装不在maven库中的第三方jar,使用maven-install-plugin。

步骤如下:

从源代码(网站)手动下载jar文件 创建一个文件夹,并将jar文件放在其中 运行以下命令在本地maven存储库中安装第三方jar

mvn install:install-file -dfile= -dgroupId= -dartifactId= -dversion= -dpackaging=

下面是我用于simmonsite log4j的示例

mvn安装:安装文件 -Dfile=/Users/athanka/git/MyProject/repo/log4j- rollingappender .jar -DgroupId=uk.org.simonsite -DartifactId=log4j- rollingappender -Dversion=20150607-2059 -Dpackaging=jar

在pom.xml中包括如下所示的依赖项 < >的依赖 < groupId > uk.org.simonsite < / groupId > < artifactId > log4j-rolling-appender < / artifactId > <版本> 20150607 - 2059 > < /版本 < / >的依赖 运行mvn clean install命令创建您的打包

以下是参考链接:

https://maven.apache.org/guides/mini/guide-3rd-party-jars-local.html

这并没有回答如何将它们添加到您的POM中,并且可能是一个无需动脑的问题,但只是将lib目录添加到您的类路径工作吗?我知道,当我需要一个外部jar,但又不想添加到Maven reppos时,我就会这样做。

希望这能有所帮助。

对于那些在这里没有找到好的答案的人,这是我们正在做的事情,以获得一个包含所有必要依赖项的罐子。这个答案(https://stackoverflow.com/a/7623805/1084306)提到了使用Maven Assembly插件,但实际上并没有给出一个示例。如果你不从头到尾看完答案(答案相当长),你可能会错过它。将以下内容添加到pom.xml中将生成target/${PROJECT_NAME}-${VERSION}-jar-with-dependencies.jar

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.4.1</version>
            <configuration>
                <!-- get all project dependencies -->
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
                <!-- MainClass in mainfest make a executable jar -->
                <archive>
                  <manifest>
                    <mainClass>my.package.mainclass</mainClass>
                  </manifest>
                </archive>

            </configuration>
            <executions>
              <execution>
                <id>make-assembly</id>
                <!-- bind to the packaging phase -->
                <phase>package</phase> 
                <goals>
                    <goal>single</goal>
                </goals>
              </execution>
            </executions>
        </plugin>