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

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

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

在研究过程中,我偶然发现了几个这样的 Maven 插件:

  1. s3-upload-maven-plugin(参见文档 here) - 一次只支持单个文件上传
  2. s3-static-uploader(参见文档 here)- 一个令人兴奋的前景,但可用的功能很少
  3. aws-parent(参见文档 here)- 未发布官方 maven 插件,但与 s3-static-uploader 共享接近度,我无法使其工作
  4. jetS3t(参见发布文档 here)

我已经尝试了所有这些插件,但每次都无法实现我的目标。

我接近实现我的目标是在使用 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 上只上传了一个文件,它显示构建失败并为下一个文件显示以下消息:

Failed to execute goal io.pst.mojo:s3-static-uploader-plugin:1.1:upload (default-cli) on project sbworkbenchnavigation-portlet: cannot process file /home/pawal/sbworkbench/portlets/sbworkbenchnavigation-portlet/src/main/webapp/css/main.css: Access Denied ->

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

问题:

  1. 我做错了什么吗?我已经遵循了插件文档 正是(我认为)。
  2. 是否有任何其他 maven 插件可用于将静态内容上传到 Amazon s3 服务器?

最佳答案

我一直在寻找解决方案并决定 fork 我自己的 =)

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

关于java - 使用 maven 插件将静态资源上传到 Amazon s3 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20650514/

相关文章:

java - 在 Android 和 Java 上复制 Swift 完成处理程序

java - 如何在 Javabean 中将属性标记为 transient 以避免被 XMLEncoder 序列化?

angularjs - OTS将Glyphicon的字体文件的: Failed to convert WOFF 2. 0字体错误解析为SFNT,用于Spring-boot

java - Spring MVC 中出现错误 Missing artifact spring-web :org. springframework

java - 使用 Spring MVC 上传文件

SpringBoot 使用高级休息客户端进行简单的分段文件上传(Chrome)

java - hadoop中的矩阵乘法

java - 基于maven-war-plugin的maven打包

angular - 为什么 HttpEventType.UploadProgress 事件在 Angular 文件上传请求中只执行一次?

java - Tomcat 配置 - 多台主机