【问题标题】:Upload static resource to Amazon s3 server using maven plugin使用 maven 插件将静态资源上传到 Amazon s3 服务器
【发布时间】:2014-01-06 04:20:29
【问题描述】:

我想将我的项目存储库中的静态内容上传到 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 上只上传了一个文件,它显示构建失败,下一个文件的消息如下:

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

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

问题:

  1. 我做错了什么吗?我已按照插件文档进行操作 准确地说(我认为)。
  2. 是否有任何其他 maven 插件可用于将静态内容上传到 Amazion s3 服务器?

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      通过 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>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-11-22
        • 2011-06-29
        • 1970-01-01
        • 2016-12-25
        • 1970-01-01
        • 2011-06-01
        • 2021-05-10
        • 1970-01-01
        相关资源
        最近更新 更多