使用 pom.xml 从本地磁盘空间下载 jars 到 .m2 存储库

TDH*_*DHM 1 java maven-plugin maven-3 maven

我正在将简单的 java 项目(它很旧)移动到基于 Maven 的,并且在当前项目中,所有需要的 jars 都保存在lib文件夹中。

对于lib文件夹中的每个 jar ,我在 maven 中央存储库中搜索各自的依赖项 - https://mvnrepository.com/并将该依赖项添加到pom.xml

但是我无法在中央 Maven 存储库中找到某些 jar,并且团队中没有资源可以帮助我确定位置(如果是第三方)。

一种方法是我可以将这些 jars 上传到一些存储库,如 Nexus 和 pom.xml,我可以在repository标签下提及它的 url,因此在点击mvn install它们后将被添加到.m2

但目前,我也没有任何可以上传这些罐子的位置。所以我会把它们放在我机器上的一个文件夹中。

只是想知道 maven 中是否有任何方法(在 中提及某些内容pom.xml)将指向该文件夹(以防 jar 在中央 maven repo 中不可用)并将其下载到.m2

Mat*_*teo 5

如果您没有要使用的 Maven 存储库,我能想到的第一个选项是在您的语言环境 Maven 存储库中使用 Maven 安装 3rd 方 JAR,您可以通过两种方式进行:

1) 命令行: mvn install:install-file -Dfile= -DgroupId= -DartifactId= -Dversion= -Dpackaging= 这里是安装 3rd 方 JAR的官方 mav

2)使用 maven-install-plugin(例如,对于一个项目,我正在分发一个带有 jars 的项目,作为环境设置分发给团队中的所有开发人员):

    <build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-install-plugin</artifactId>
            <version>2.5.1</version>
            <configuration>
                <groupId>some_group_id</groupId>
                <artifactId>some_artifact_id</artifactId>
                <version>some_version</version>
                <packaging>jar</packaging>
                <file>path to jar</file>
                <generatePom>true</generatePom>
            </configuration>
            <executions>
                <execution>
                    <id>install-jar-lib</id>
                    <goals>
                        <goal>install-file</goal>
                    </goals>
                    <phase>validate</phase>
                </execution>
            </executions>
        </plugin>
    </plugins>
Run Code Online (Sandbox Code Playgroud)

编辑:我已经阅读了其他建议在依赖中使用 systemPath 的答案。

当然这是一个选项,但在原始主题中被问到:“只是想知道 maven 中是否有任何方法(在 pom.xml 中提及某些内容)将指向该文件夹(以防 jar 在中央不可用maven repo) 并将其下载到 .m2"

使用 systemPath 不会这样做,并且会要求 jar 在同一路径中的所有系统中始终可用。我使用了几次,它主要适用于您不需要与其他团队成员共享的项目。我不建议这样做,想象一个团队使用不同操作系统(windows 和 linux)的场景,你应该配置不同的配置文件来激活它们,或者在所有系统上以相同的方式定义一些路径)。除了系统范围之外,例如在 WAR 或 EAR 中包含依赖项时,行为与“提供”相同。根据我在本地存储库中安装的经验,带有配置步骤的 jar 的缺点较少。

希望我能有所帮助。

再见