配置 Cargo 的 Maven 插件

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

1. Maven 插件和仓库配置

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

vi ~/.m2/repository/settings.xml
vi ~/.m2/repository/settings.xml
vi ~/.m2/repository/settings.xml 

添加如下 pluginGroups:

<pluginGroups>
<pluginGroup>org.codehaus.cargo</pluginGroup>
<pluginGroup>org.codehaus.mojo</pluginGroup>
</pluginGroups>
<pluginGroups> <pluginGroup>org.codehaus.cargo</pluginGroup> <pluginGroup>org.codehaus.mojo</pluginGroup> </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>
<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>
<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>
<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>
<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>
<?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>
<?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>
<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>
<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 clean install
mvn clean install

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

mvn cargo:run
mvn cargo:run
mvn cargo:run

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