我想将项目存储库中的静态内容上传到 Amazon S3(简单存储服务),其中包括包含在 src/main/webapp 中的所有内容。为此我需要使用 maven 插件 在构建时自动上传此类资源。
在研究过程中,我偶然发现了几个这样的 Maven 插件:
- s3-upload-maven-plugin(参见文档 here) - 一次只支持单个文件上传
- s3-static-uploader(参见文档 here)- 一个令人兴奋的前景,但可用的功能很少
- aws-parent(参见文档 here)- 未发布官方 maven 插件,但与 s3-static-uploader 共享接近度,我无法使其工作
- 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 中,它对下一个文件显示相同的错误。在同一过程中迭代所有文件后,构建显示成功消息。
问题:
- 我做错了什么吗?我已经遵循了插件文档 正是(我认为)。
- 是否有任何其他 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/