使用本地依赖项和远程

时间:2019-11-21 02:01:29

标签: maven

我有2个项目。一个使用本地依赖项。

这是settings.xml的内容。

<localRepository>C:/sales/dependency/repository</localRepository>
<interactiveMode>false</interactiveMode>
<usePluginRegistry>true</usePluginRegistry>
<offline>true</offline>

第二个使用远程(我自己的Nexus存储库)服务器。

<mirrors>
    <mirror>
        <id>nexus</id>
        <mirrorOf>*</mirrorOf>
        <url>http://172.19.128.12:8090/repository/salesgroup</url>
    </mirror>
</mirrors>

我将合并这两个项目。我无法将本地依赖项上传到Nexus。因此,我必须在项目中同时使用两者。在这种情况下,settings.xml文件应该是什么样子。

2 个答案:

答案 0 :(得分:0)

相反,如果将您的nexus存储库添加为镜像,则将您的nexus和本地存储库都添加为~/.m2/settings.xml中的配置文件中的存储库,如下所示。

<settings xmlns="http://maven.apache.org/SETTINGS/1.1.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd">

    ...    

    <profiles>
        <profile>
            <id>maven-repositories</id>
            <repositories>
                <repository>
                    <id>local</id>
                    <name>Local</name>
                    <url>file:///C:/sales/dependency/repository</url>
                </repository>
                <repository>
                    <id>nexus</id>
                    <name>Nexus Repository</name>
                    <url>http://172.19.128.12:8090/repository/salesgroup</url>
                    <layout>default</layout>
                    <releases>
                        <enabled>true</enabled>
                        <updatePolicy>never</updatePolicy>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                        <updatePolicy>never</updatePolicy>
                    </snapshots>
                </repository>
            </repositories>
        </profile>
    </profiles>
    <activeProfiles>
        <activeProfile>maven-repositories</activeProfile>
    </activeProfiles>
</settings>

答案 1 :(得分:0)

这是我的建议:

~/.m2/settings.xml

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
  <!-- localRepository
   | The path to the local repository maven will use to store artifacts.
   |
   | Default: ${user.home}/.m2/repository -->
  <localRepository>C:/sales/dependency/repository</localRepository>

  ...

</settings>

这会将C:/sales/dependency/repository目录作为所有maven项目在用户级别的本地存储库。

现在,当您说合并两个项目时,有两种可能性如下:

  • 您将合并单个pom和src文件夹
  • 您将拥有父pom,并且这两个项目将是它的模块。

在两种情况下,您都可以仅在组合项目的单个pom /父pom文件下定义<repositories>。因此,这些项目将使用您的内部存储库来解决local存储库中没有的依赖项。

<project>
  ...
  <repositories>
    <repository>
      <id>my-internal-site</id>
      <url>http://myserver/repo</url>
    </repository>
  </repositories>
  ...
</project>

有关更多详细信息,您可以阅读更多here

相关问题