2013-10-08 66 views
3

我有一個非常簡單的pom.xml,它生成一個完全正常工作的Web服務(如果本地部署的話)(Tomcat 7)。這是它的<build>部分:如何添加WSDL,XSD(可能還有其他文件)到WAR

<build> 
    <finalName>${artifact.id}</finalName> 
    <plugins> 
     <plugin> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>2.3.2</version> 
     <configuration> 
      <source>1.6</source> 
      <target>1.6</target> 
     </configuration> 
     </plugin> 

     <plugin> 
     <groupId>org.apache.cxf</groupId> 
     <artifactId>cxf-codegen-plugin</artifactId> 
     <version>2.3.1</version> 
     <executions> 
      <execution> 
      <id>generate-sources</id> 
      <configuration> 
       <sourceRoot>${basedir}/target/generated/src/main/java</sourceRoot> 
       <wsdlOptions> 
       <wsdlOption> 
        <wsdl>${basedir}/src/main/wsdl/mywebservice.wsdl</wsdl> 
        <extraargs> 
        <extraarg>-impl</extraarg> 
        <extraarg>-verbose</extraarg> 
        </extraargs> 
        <wsdlLocation>${basedir}/src/main/wsdl/mywebservice.wsdl</wsdlLocation> 
       </wsdlOption> 
       </wsdlOptions> 
      </configuration> 
      <goals> 
       <goal>wsdl2java</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 

     <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>build-helper-maven-plugin</artifactId> 
     <version>1.5</version> 
     <executions> 
      <execution> 
      <id>add-source</id> 
      <phase>generate-sources</phase> 
      <goals> 
       <goal>add-source</goal> 
      </goals> 
      <configuration> 
       <sources> 
       <source>${basedir}/target/generated/src/main/java</source> 
       </sources> 
      </configuration> 
      </execution> 
      <execution> 
      <id>attach-artifacts</id> 
      <phase>package</phase> 
      <goals> 
       <goal>attach-artifact</goal> 
      </goals> 
      <configuration> 
       <artifacts> 
       <artifact> 
        <file>${basedir}/src/main/wsdl/mywebservice.wsdl</file> 
        <type>wsdl</type> 
       </artifact> 
       <artifact> 
        <file>${basedir}/src/main/xsd/myschema.xsd</file> 
        <type>xsd</type> 
       </artifact> 
       </artifacts> 
      </configuration> 
      </execution> 

     </executions> 
     </plugin> 

    </plugins> 
    </build> 

在部署到遠程服務器,如果在本地,而不是部署它只能是因爲遠程服務器中找不到發展的源目錄${basedir}/target/generated/src/main/.wsdl.xsd文件,而且它們在WAR文件中也找不到地方。

顯然,我在我的pom.xml中丟失了一些東西,這會讓Maven將這些文件添加或附加到WAR中。

我嘗試attach-artifact目標(如上所述),但它僅將這些文件複製到我的本地(開發).m2存儲庫,而不是WAR文件。

如何將文件添加或附加到要部署的實際文件.war

回答

6

我解開了這個謎。 (?加上CXF)

在這裏張貼的答案的情況下,另一個新手的Maven遇到這個問題:

事實證明,該attach-artifact執行是完全不必要的,是一個出手in the wrong direction

我不得不這樣做是爲了在<build>部分的頂部添加,只是<plugins>之前如下:

<resources> 
    <resource> 
     <directory>src/main/wsdl</directory> 
    </resource> 
    <resource> 
     <directory>src/main/xsd</directory> 
    </resource> 
</resources> 

這就是全部。然後Maven會自動將所有文件放入這些目錄中的WEB-INF/classes/

相關問題