如何从特定配置文件中的部署中排除工件

how to exclude artifact from deploy in specific profile

在我们的 pom 文件中,我们有一个特殊的配置文件,允许我们将工件部署到我们的内部 Maven 存储库以及位于 google 云上的外部存储库。

<distributionManagement>
        <repository>
            <uniqueVersion>false</uniqueVersion>
            <id>nexus</id>
            <name>Internal Releases</name>
            <url>http://internal_instance_ip/nexus/content/repositories/releases</url>
            <layout>default</layout>
        </repository>
        <snapshotRepository>
            <uniqueVersion>true</uniqueVersion>
            <id>nexus-snapshots</id>
            <name>Internal Snapshots</name>
            <url>http://internal_instance_ip/nexus/content/repositories/snapshots</url>
            <layout>default</layout>
        </snapshotRepository>
    </distributionManagement>

<profiles>
        <profile>
            <id>gce</id>
            <distributionManagement>
                <repository>
                    <uniqueVersion>false</uniqueVersion>
                    <id>nexus-gce</id>
                    <name>External Releases</name>
                    <url>https://gce_instance_ip/content/repositories/releases</url>
                    <layout>default</layout>
                </repository>
                <snapshotRepository>
                    <uniqueVersion>true</uniqueVersion>
                    <id>nexus-snapshots-gce</id>
                    <name>External Snapshots</name>
                    <url>https://gce_instance_ip/content/repositories/snapshots</url>
                    <layout>default</layout>
                </snapshotRepository>
            </distributionManagement>
        </profile>
    </profiles>

当我尝试部署项目时,它抱怨:

Return code is: 413, ReasonPhrase: Request Entity Too Large.

该项目有很多模块,有问题的不需要部署到google云端。我如何排除该模块被部署到 google 云存储库但仍部署到内部存储库?

您可以通过在命令行中传递以下参数来排除模块:

--projects '!module-to-exclude'

来自mvn --help

 -pl,--projects <arg>                   Comma-delimited list of specified
                                    reactor projects to build instead
                                    of all projects. A project can be
                                    specified by [groupId]:artifactId
                                    or by its relative path.

另见 How to exclude a module from a Maven reactor build?