2010-05-18 22 views
1

我有一個使用maven構建的web應用程序(即maven-war-plugin)的情況。對於每個代碼修改,我們必須手動啓動maven並重新啓動應用程序服務器。現在,爲了減少構建週期開銷,我想使用WTP來發布webapp。用m2eclipse和WTP一起構建WAR(處理webResources)

現在,我們使用Maven進行資源處理,並且在構建webapp時,我們在POM中定義了一些額外的Maven任務。因此m2eclipse似乎是一個自然的解決方案。

我已經得到足夠多,Maven構建器正在運行這些任務並正確過濾資源。但是,當我選擇「在服務器上運行」時,WAR文件看起來並不像我在Maven中構建它時那樣。

我是猜測這是因爲WTP實際上構建的是WAR,而不是m2eclipse構建器。所以即使我們在我們的POM中配置了maven-war-plugin,這些設置也不會被使用。

下面是我們的maven-war-plugin配置的一個片段。什麼是在「webResources」不拿起配置,看來:

<groupId>org.apache.maven.plugins</groupId> 
<artifactId>maven-war-plugin</artifactId> 
<version>2.1-alpha-2</version> 
<configuration> 
<outputDirectory>${project.build.directory}</outputDirectory> 
<workDirectory>${project.build.directory}/work</workDirectory> 
<webappDirectory>${project.build.webappDirectory}</webappDirectory> 
<cacheFile>${project.build.webappDirectory}/webapp-cache.xml</cacheFile> 
<filteringDeploymentDescriptors>true</filteringDeploymentDescriptors> 
<nonFilteredFileExtensions> 
    <nonFilteredFileExtension>pdf</nonFilteredFileExtension> 
    <nonFilteredFileExtension>png</nonFilteredFileExtension> 
    <nonFilteredFileExtension>gif</nonFilteredFileExtension> 
    <nonFilteredFileExtension>jsp</nonFilteredFileExtension> 
</nonFilteredFileExtensions> 
<webResources> 
<!-- Add generated WSDL:s and XSD:s for the web service api. --> 
    <resource> 
    <directory>${project.build.directory}/jaxws/wsgen/wsdl</directory> 
    <targetPath>WEB-INF/wsdl</targetPath> 
    <filtering>false</filtering> 
    <includes> 
    <include>**/*</include> 
    </includes> 
</resource>    
</webResources> 
</configuration> 

我是否需要重新配置這些資源在其他地方處理,或者是有沒有更好的解決辦法?

回答

1

我不確定(過濾)網絡資源是否受支持,請參閱MNGECLIPSE-1149。這個問題有一個補丁(和一個解決方法),可以爲你工作。也看看從this thread破解。

+0

謝謝!在這種情況下,我最終使用了線程中的hack。 – waxwing 2010-05-18 13:58:01

2

要回答我自己的問題填寫,如果別人遇到了同樣的問題,我最終加入以下到我的webapp項目:

<resource> 
    <directory>${project.build.directory}/jaxws/wsgen/wsdl</directory> 
    <filtering>true</filtering> 
    <targetPath>${project.basedir}/src/main/webapp/WEB-INF/wsdl</targetPath> 
    <includes> 
    <include>**/*</include> 
    </includes> 
</resource> 

(在resources元素中下build)。

它工作正常,因爲我的WSDL文件生成在generate-resources階段,並將它們放在target/jaxws/wsgen/wsdl。然後將這些文件移動到src/main/webapp/WEB-INF/wsdl中,WTP構建器在構建WAR文件時選擇它們。

注意:我應該提一下,我現在在Maven的eclipse插件(即mvn eclipse:eclipse)中遇到了一些問題,因爲顯然你不允許在targetPath中擁有絕對路徑。尚未找到令人滿意的解決方法...