配置 Cargo 的 Maven 插件

  Cargo 是一款自动化部署工具,它提供了 Maven 插件 ,可以通过 Maven 快速方便地部署服务。本文简要介绍了 Cargo 的 Maven 插件的配置方法,使用系统为 macOS 10.12。

1. Maven 插件和仓库配置

  编辑 Home 下 .m2 目录中的 settings.xml:

vi ~/.m2/repository/settings.xml 

添加如下 pluginGroups:

<pluginGroups>
    <pluginGroup>org.codehaus.cargo</pluginGroup>
     <pluginGroup>org.codehaus.mojo</pluginGroup>
</pluginGroups>

添加如下的 pluginRepositories:

<pluginRepositories>
    <pluginRepository>
        <id>sonatype-snapshots</id>
        <name>Sonatype Snapshots</name>
        <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
        <releases>
        <enabled>false</enabled>
        </releases>
        <snapshots>
        <enabled>true</enabled>
        </snapshots>
    </pluginRepository>
</pluginRepositories>

添加如下的 repositories:

<repositories>
    <repository>
        <id>sonatype-snapshots</id>
        <name>Sonatype Snapshots</name>
        <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
        <releases>
        <enabled>false</enabled>
        </releases>
        <snapshots>
        <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>

  此时完整文件如下:

<?xml version="1.0" encoding="UTF-8"?>

<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
                        https://maven.apache.org/xsd/settings-1.0.0.xsd">
    <localRepository/>
    <interactiveMode/>
    <usePluginRegistry/>
    <offline/>
    <pluginGroups>
        <pluginGroup>org.codehaus.cargo</pluginGroup>
         <pluginGroup>org.codehaus.mojo</pluginGroup>
    </pluginGroups>
    <servers/>
    <mirrors/>
    <proxies/>
    <profiles/>
    <activeProfiles/>

    <pluginRepositories>
        <pluginRepository>
            <id>sonatype-snapshots</id>
            <name>Sonatype Snapshots</name>
            <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
            <releases>
            <enabled>false</enabled>
            </releases>
            <snapshots>
            <enabled>true</enabled>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>

    <repositories>
        <repository>
            <id>sonatype-snapshots</id>
            <name>Sonatype Snapshots</name>
            <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
            <releases>
            <enabled>false</enabled>
            </releases>
            <snapshots>
            <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>

</settings>

2. 项目配置

  在项目的 pom.xml 中,添加如下的插件:

<plugins>
    <plugin>
        <groupId>org.codehaus.cargo</groupId>
        <artifactId>cargo-maven2-plugin</artifactId>
        <version>1.6.4</version>
        <configuration>
            <container>
                <containerId>tomcat8x</containerId>
                <home>/user/local/apache-tomcat-8.5.20</home>
            </container>
            <configuration>
                <type>existing</type>
                <home>/user/local/apache-tomcat-8.5.20</home>
            </configuration>
            <deployables>
                <deployable>
                    <groupId>${project.groupId}</groupId>
                    <artifactId>${project.artifactId}</artifactId>
                    <type>war</type>
                    <properties>
                        <context>${project.artifactId}</context>
                    </properties>
                </deployable>
            </deployables>
            <deployer>
                <type>installed</type>
            </deployer>
        </configuration>
    </plugin>
</plugins>

其中,container 下的 containerId 指明使用的容器名称为 tomcat8x,home 为本地 Tomcat 路径。configuration 下的 type 为 existing,指明使用现有容器,home 为容器地址。deployables 下为项目相关信息。deployer 下 type 为 installed 指定使用本地已安装的 Tomcat,而非自动下载。

  配置完成后,首先编译项目:

mvn clean install

然后使用如下命令进行部署:

mvn cargo:run

  除了像上面一样部署到本地 Tomcat Server,Cargo 还支持远程部署,详见这里