2016-09-20 87 views
2

對於最新版本的AWS SDK(如1.11.28),我在pom.xml中放置了什麼,以便Maven可以編織和編譯所有內容?本主題在幾個地方進行了討論,但我可以找到的所有答案都是YEARS OLD,並且我只能讓它們適用於古代版本的AWS SDK(如果有的話)。如何配置Maven以編譯當前的AWS SWF代碼

How to consume Amazon SWF < - 這對AWS 1.3.3有一個可靠的答案,其中一個答案暗示在1.9.x,但仍然有幾年的歷史。

http://www.ana-todor.ro/using-the-aws-flow-java-framework-with-intellij-idea-and-maven/ < - 這就像一個魅力,但僅用於AWS 1.7和舊版本的AspectJ

回答

2

的多google搜索後,看書,琢磨,試驗和錯誤,並咬牙切齒的,我現在有一個成功編譯基於SWF的AWS SDK版本1.11.35的應用程序的POM(順便說一下,我將它與Java 1.7一起使用)。這不僅僅是讓版本號正確,但更多的是獲取組件的正確名稱(顯然,亞馬遜已經改變了他們近幾年來不止一次組織SDK的方式)。所以這裏是:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>groupid</groupId> 
    <artifactId>myproj</artifactId> 
    <version>1.01</version> 
    <name>MyProjName</name> 

    <properties> 
    <target.dir>target</target.dir> 
    <annotations.dir>${target.dir}/generated-sources/annotations</annotations.dir> 
    <aws.version>1.11.35</aws.version> 
    <flow.tools.name>aws-swf-build-tools</flow.tools.name> 
    <flow.tools.version>1.0</flow.tools.version> 
    <freemarker.version>2.3.25-incubating</freemarker.version> 
    <aspectj-runtime.version>1.7.4</aspectj-runtime.version> 
    <aspectj-maven-plugin.version>1.8</aspectj-maven-plugin.version> 
    <compliance.level>1.7</compliance.level> 
    </properties> 

    <dependencies> 
    <!-- dependencies for AWS Flow --> 
    <dependency> 
     <groupId>com.amazonaws</groupId> 
     <artifactId>aws-java-sdk</artifactId> 
     <version>${aws.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>com.amazonaws</groupId> 
     <artifactId>${flow.tools.name}</artifactId> 
     <version>${flow.tools.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>commons-configuration</groupId> 
     <artifactId>commons-configuration</artifactId> 
     <version>1.9</version> 
    </dependency> 

    <!-- Dependencies for preprocessing SWF's @annotations: --> 
    <dependency> 
     <groupId>org.freemarker</groupId> 
     <artifactId>freemarker</artifactId> 
     <version>${freemarker.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>org.aspectj</groupId> 
     <artifactId>aspectjrt</artifactId> 
     <version>${aspectj-runtime.version}</version> 
     <optional>true</optional> 
    </dependency> 

    </dependencies> 

    <build> 
    <plugins> 

     <!-- Use a standalone annotation processor --> 
     <plugin> 
    <groupId>com.mysema.maven</groupId> 
    <artifactId>apt-maven-plugin</artifactId> 
    <version>1.1.3</version> 
    <executions> 
     <execution> 
     <goals> 
      <goal>process</goal> 
     </goals> 
     <configuration> 
      <outputDirectory>${annotations.dir}</outputDirectory> 
      <processor> 
       com.amazonaws.eclipse.simpleworkflow.asynchrony.annotationprocessor.AsynchronyDeciderAnnotationProcessor 
      </processor> 
     </configuration> 
     </execution> 
    </executions> 
    <dependencies> 
     <dependency> 
      <groupId>com.amazonaws</groupId> 
      <artifactId>${flow.tools.name}</artifactId> 
      <version>${flow.tools.version}</version> 
      </dependency> 
     <dependency> 
     <groupId>com.amazonaws</groupId> 
     <artifactId>aws-java-sdk</artifactId> 
     <version>${aws.version}</version> 
     </dependency> 
     <dependency> 
     <groupId>org.freemarker</groupId> 
     <artifactId>freemarker</artifactId> 
     <version>${freemarker.version}</version> 
     </dependency> 
     <dependency> 
     <groupId>org.apache.commons</groupId> 
     <artifactId>commons-lang3</artifactId> 
     <version>3.3.2</version> 
     </dependency> 
    </dependencies> 
     </plugin> 

     <!-- Tell Maven NOT to do any annotation processing: --> 
     <plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>3.2</version> 
    <configuration> 
     <compilerArgument>-proc:none</compilerArgument> 
     <compilerArguments> 
     <Xmaxerrs>5</Xmaxerrs> 
     </compilerArguments>   
     <source>${compliance.level}</source> 
     <target>${compliance.level}</target> 
    </configuration> 
     </plugin> 

     <!-- Enable weaving via AspectJ: --> 
     <plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>aspectj-maven-plugin</artifactId> 
    <version>${aspectj-maven-plugin.version}</version> 
    <dependencies> 
     <!-- Include this in order to keep aspectjrt consistent across all dependencies: --> 
     <dependency> 
     <groupId>org.aspectj</groupId> 
     <artifactId>aspectjtools</artifactId> 
     <version>${aspectj-runtime.version}</version> 
     </dependency> 
    </dependencies> 
    <configuration> 
     <complianceLevel>${compliance.level}</complianceLevel> 
     <showWeaveInfo>true</showWeaveInfo> 
     <verbose>true</verbose> 
     <source>${compliance.level}</source> 
     <target>${compliance.level}</target> 
     <aspectLibraries> 
     <aspectLibrary> 
      <groupId>com.amazonaws</groupId> 
      <artifactId>aws-java-sdk</artifactId> 
     </aspectLibrary> 
      <aspectLibrary> 
       <groupId>com.amazonaws</groupId> 
      <artifactId>aws-java-sdk-swf-libraries</artifactId> 
      </aspectLibrary> 
     </aspectLibraries> 
     <sources> 
     <source> 
      <basedir>${annotations.dir}</basedir> 
     </source> 
     <source> 
      <basedir>src/main/java</basedir> 
     </source> 
     </sources> 
    </configuration> 
    <executions> 
     <execution> 
     <goals> 
      <goal>compile</goal> <!-- use this goal to weave all your main classes --> 
      <goal>test-compile</goal> <!-- use this goal to weave all your test classes --> 
     </goals> 
     </execution> 
    </executions> 
     </plugin> 

    </plugins> 
    </build> 

</project>