我想将静态内容从我的项目存储库上传到 Amazon S3(简单存储服务),其中包含 src / main / webapp 中包含的所有内容。我需要使用 maven插件在构建时自动执行此类资源上传。
虽然研究我偶然发现了几个这样的maven插件:
我尝试过所有这些插件,每次都无法实现目标。
关闭我来实现我的目标是使用 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 中,它显示下一个文件的相同错误。在所有文件在同一进程中迭代后,构建显示成功消息。
问题:
答案 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>