使用maven插件将静态资源上载到Amazon s3服务器

时间:2013-12-18 05:44:55

标签: java maven file-upload amazon-web-services amazon-s3

我想将静态内容从我的项目存储库上传到 Amazon S3(简单存储服务),其中包含 src / main / webapp 中包含的所有内容。我需要使用 maven插件在构建时自动执行此类资源上传。

虽然研究我偶然发现了几个这样的maven插件:

  1. s3-upload-maven-plugin (参见文档here)       - 它一次只支持单个文件上传
  2. s3-static-uploader (请参阅文档here) - 一个令人兴奋的展望未来,无论功能是否最少
  3. aws-parent (请参阅文档here) - 没有发布官方maven插件,但与s3-static-uploader共享接近,我无法使其正常工作
  4. jetS3t (请参阅发布文档here
  5. 我尝试过所有这些插件,每次都无法实现目标。

    关闭我来实现我的目标是使用 s3-static-uploader 并且我的pom看起来像

     <plugin>
            <groupId>io.pst.mojo</groupId>
            <artifactId>s3-static-uploader-plugin</artifactId>
            <version>1.1</version>
            <configuration>
                <accessKey>${aws.accessKey}</accessKey>
                <secretKey>${aws.secretKey}</secretKey>
                <bucketName>${aws.bucketName}</bucketName>
                <refreshExpiredObjects>true</refreshExpiredObjects>
                <includes>
                    <include>
                        <bind>
                            <!-- Could be path expressions or reg. expressions -->
                            <pattern>%regex[([^\s]+(\.(?i)(jpg|png|gif|bmp|tif|pdf|swf|eps))$)]</pattern>
                            <metadataId>static</metadataId>
                        </bind>
                    </include>
                    <include>
                        <bind>
                            <pattern>%regex[([^\s]+(\.(?i)(css|js))$)]</pattern>
                            <metadataId>volatile</metadataId>
                        </bind>
                    </include>
                    <include>
                        <bind>
                            <!-- Extension less files -->
                            <pattern>%regex[^[^.]+$]</pattern>
                            <metadataId>volatile-naked</metadataId>
                        </bind>
                    </include>
                </includes>
                <excludes>
                    <exclude>WEB-INF/.*</exclude>
                </excludes>
                <metadatas>
                    <metadata>
                        <id>static</id>
                        <cacheControl>public</cacheControl>
                        <contentEncoding>plain</contentEncoding>
                        <contentType>text/html</contentType>
                        <cannedAcl>PublicRead</cannedAcl>
                    </metadata>
                    <metadata>
                        <id>static-longlived</id>
                        <cacheControl>public</cacheControl>
                        <contentEncoding>plain</contentEncoding>
                               <contentType>text/html</contentType>
                        <cannedAcl>PublicRead</cannedAcl>
                    </metadata>
                    <metadata>
                        <id>volatile</id>
                        <cacheControl>private</cacheControl>
                        <contentEncoding>plain</contentEncoding>
                        <contentType>text/html</contentType>
                        <cannedAcl>PublicRead</cannedAcl>
                    </metadata>
                    <metadata>
                        <id>volatile-naked</id>
                        <cacheControl>private</cacheControl>
                        <contentEncoding>plain</contentEncoding>
                        <contentType>text/html</contentType>
                        <cannedAcl>PublicRead</cannedAcl>
                    </metadata>
                </metadatas>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>upload</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    

    但是在 maven install 上只会上传一个文件,它会显示构建失败,并显示下一个文件的以下消息:

      

    无法执行目标   io.pst.mojo:s3-static-uploader-plugin:1.1:upload(default-cli)on   project sbworkbenchnavigation-portlet:无法处理文件   /home/pawal/sbworkbench/portlets/sbworkbenchnavigation-portlet/src/main/webapp/css/main.css:   访问被拒绝 - &gt;

    在下一个 maven install 中,它显示下一个文件的相同错误。在所有文件在同一进程中迭代后,构建显示成功消息。

    问题:

    1. 我做错了什么?。我已经关注了插件文档 正是(我认为)。
    2. 我可以使用其他maven插件将静态内容上传到Amazion s3服务器吗?

2 个答案:

答案 0 :(得分:3)

我一直在寻找解决方案,并决定自己分配=)

它基于s3-upload-maven-plugin(我使用多次执行来允许多个文件)。 请查看:https://github.com/moacyrricardo/s3-upload-maven-plugin

答案 1 :(得分:3)

通过组合s3-wagon扩展和wagon插件可以实现同样的目标:

的.m2 / settings.xml中

<servers>
    <server>
      <id>aws-release</id>
      <username>ASFFDSFDSFDSFDSFSFDF</username>
      <password>Hmasdflaskdjflksdjflaskdjflasjdflkasjdfl</password>
    </server>
</servers>

的pom.xml

<build>
    <extensions>
        <extension>
            <groupId>org.kuali.maven.wagons</groupId>
            <artifactId>maven-s3-wagon</artifactId>
            <version>1.2.1</version>
        </extension>
    </extensions>
    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>wagon-maven-plugin</artifactId>
        <version>1.0</version>
        <executions>
            <execution>
                <id>deploy-release</id>
                <phase>deploy</phase>
                <goals>
                    <goal>upload</goal>
                </goals>
                <configuration>
                    <serverId>aws-release</serverId>
                    <url>s3://${bucket}/releases/</url>
                    <fromDir>${project.build.directory}</fromDir>
                    <toDir>${project.version}</toDir>
                    <includes>
                        ${project.artifactId}-${project.version}.jar,
                        ${project.artifactId}-${project.version}.dmg,
                        ${project.artifactId}-${project.version}-shaded.jar,
                    </includes>
                </configuration>
            </execution>
        </executions>
    </plugin>
</build>
相关问题