com.iceolive:cos-web-deploy-maven-plugin

A maven plugin that deploy web site to tencent cloud COS

License

License

Categories

Categories

Maven Build Tools
GroupId

GroupId

com.iceolive
ArtifactId

ArtifactId

cos-web-deploy-maven-plugin
Last Version

Last Version

0.1.0
Release Date

Release Date

Type

Type

maven-plugin
Description

Description

A maven plugin that deploy web site to tencent cloud COS
Source Code Management

Source Code Management

https://github.com/wmz46/cos-web-deploy

Download cos-web-deploy-maven-plugin

How to add to project

<plugin>
    <groupId>com.iceolive</groupId>
    <artifactId>cos-web-deploy-maven-plugin</artifactId>
    <version>0.1.0</version>
</plugin>

Dependencies

compile (3)

Group / Artifact Type Version
com.qcloud : cos_api jar 5.6.28
com.tencentcloudapi : tencentcloud-sdk-java jar 3.1.118
org.apache.maven : maven-plugin-api jar 3.6.3

provided (2)

Group / Artifact Type Version
org.projectlombok : lombok jar 1.18.12
org.apache.maven.plugin-tools : maven-plugin-annotations jar 3.6.0

Project Modules

There are no modules declared in this project.

cos-web-deploy

一款用于一键发布静态网站到腾讯云COS的maven插件。

开发背景

作为腾讯云COS(对象存储)的老用户,每月下行流量免费额度有10G。用来托管个人静态网站还是挺不错的。
但是频繁发布站点还是很麻烦。每次都要手动选文件夹上传,而且不能定义文件夹里面哪些文件不上传。
上传后想网站刷新缓存还得在内容分发网络里面输入网址刷新预热。
总之不是很方便,所以有开发一键部署工具的想法。
想过几种方案,还是觉得在IDE里面直接用maven插件的部署最为方便。在IDE里改完代码直接点发布,不用来回切换软件。

设计思路

  • 通过腾讯云sdk,获取远程文件列表,通过比对md5,确定是否删除和覆盖远程文件。上传完成后调用刷新预热接口,清除网站缓存。
  • 参考gitignore设计忽略列表规则,由于!取非,优先级实现麻烦,而且不够直观,也不是很常用,故不实现。

使用说明

在pom.xml中添加以下内容,如果文件夹不是maven项目,可以手动添加pom.xml。
插件会打印需要删除和上传的文件名日志到控制台。无需删除和上传的文件的日志级别为debug,如需查看,请添加-X 参数执行mvn指令。
注意!注意!!注意!!!若本地上传目录包含当前pom.xml,请一定要配置忽略当前pom.xml,避免腾讯云密钥泄露。
建议先执行pre-deploy预演发布指令,该指令不会实际删除和上传文件。可以用来查看有哪些文件会删除和上传,避免由于配置导致文件误删问题。

 <dependencies>
    <dependency>
        <groupId>com.iceolive</groupId>
        <artifactId>cos-web-deploy-maven-plugin</artifactId>
        <version>0.1.0</version>
        <scope>provided</scope>
    </dependency>
</dependencies>
<build>
    <plugins>
        <plugin>
            <groupId>com.iceolive</groupId>
            <artifactId>cos-web-deploy-maven-plugin</artifactId>
            <version>0.1.0</version>
            <configuration>  
                <!--腾讯云secretId-->
                <secretId>xxxxxxxxxxxxx</secretId>
                <!--腾讯云secretKey-->
                <secretKey>xxxxxxxxxxxxxxx</secretKey>      
                <!--存储桶区域-->              
                <region>ap-guangzhou</region>
                <!--存储桶名称,格式:“name-appId”-->
                <bucketName>xxxx-xxxxx</bucketName>
                <!--本地上传目录,请填写绝对路径,或使用表达式-->
                <source>${project.basedir}</source>
                <!--cos的目标目录,空表示根目录,请按照cos目录格式填写,非空请以“/”结尾-->
                <target></target>
                <!--上传时是否先删除target目标目录下的所有文件(除远程忽略列表),格式:true/false-->
                <deleteRemoteFirst>false</deleteRemoteFirst>                   
                <!--本地上传忽略列表,多个使用“|”分割,规则基本同.gitignore(除了不支持!取非),实际本地忽略由localIgnore + remoteIgnore决定。支持通配符*-->
                <!--注意!注意!!注意!!!若本地上传目录包含当前pom.xml,请一定要配置忽略当前pom.xml,避免腾讯云密钥泄露。-->
                <localIgnore>*.iml|.idea/|/pom.xml</localIgnore>
                <!--远程忽略列表,不删除不添加不覆盖,多个使用“|”分割,规则基本同.gitignore(除了不支持!取非)-->
                <remoteIgnore>/upload</remoteIgnore>
                <!--你要刷新的网站目录,空则不刷新,腾讯云每日最多目录刷新次数100次-->
                <refreshPath>https://www.yoursite.com/</refreshPath>        
            </configuration>
            <executions>
                 <execution>
                    <id>deploy</id>
                    <phase>package</phase>
                    <goals>
                        <goal>deploy</goal>
                    </goals>
                </execution>
                <execution>
                    <id>pre-deploy</id>
                    <phase>compile</phase>
                    <goals>
                        <goal>pre-deploy</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

Versions

Version
0.1.0
0.0.2
0.0.1