當使用maven構建我的EJB項目時,maven期望ejb-jar.xml位於META-INF /中。然而;我需要能夠把它放在directoryA/META-INF。如何在我的maven項目中更改ejb-jar.xml的位置?
maven-ejb-plugin似乎沒有提供用於指定ejb-jar.xml的位置的參數。
您能否指點我正確的方向?
當使用maven構建我的EJB項目時,maven期望ejb-jar.xml位於META-INF /中。然而;我需要能夠把它放在directoryA/META-INF。如何在我的maven項目中更改ejb-jar.xml的位置?
maven-ejb-plugin似乎沒有提供用於指定ejb-jar.xml的位置的參數。
您能否指點我正確的方向?
事實上,Maven的EJB的插件沒有提供任何參數來改變預計將可於META-INF/ejb-jar.xml
(位置在EjbMojo硬編碼)的部署描述符或生成的位置將在構建EJB 2.X時(這是有道理的)在打包時失敗。
因此,要實現自己的目標的一種方式是使用Maven的antrun-插件包裝階段之前的directoryA
內容(假設directoryA
是一個資源目錄像src/main/resources
和已複製到target/classes
複製)到預期的位置(即target/classes
根),並做一些清理,這樣的事情:
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>prepare-package</phase>
<configuration>
<tasks>
<copy todir="${project.build.outputDirectory}">
<fileset dir="${project.build.outputDirectory}/directoryA"/>
</copy>
<delete dir="${project.build.outputDirectory}/directoryA"/>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
我不覺得這是非常乾淨的,但它的工作原理。
我最終不得不使用這種方法(儘管我不喜歡它比任何更多)。必須重新安排一些調用(使一個目錄第一等),但基本的想法奏效。謝謝。 – Jared 2009-11-12 14:22:29
通過「outputDirectory」配置屬性工作(http://maven.apache.org/plugins/maven-ejb-plugin/ejb-mojo.html#outputDirectory)?我看到它在前面提到的antrun例子中已經提出;然而,這個配置屬性在ejb插件本身中可用(請參閱鏈接)。或者,你是說你只需要移動ejb-jar.xml?
否 - 輸出目錄將更改輸出文件的位置。我需要更改INPUT文件的位置(從何處獲取文件,而不是在構建完成時將輸出置於何處)。 – Jared 2009-11-11 18:55:55
插件的外觀在build.outputdirectory/META-INF,因爲我可以在pligin源文件 私有靜態最後絃樂EJB_JAR_XML = 「META-INF/ejb-jar.xml中」 中看到的ejb-jar.xml中; 有可能使用資源插件 ....
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<id>copy-resources</id>
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${project.build.outputDirectory}/META-INF</outputDirectory>
<resources>
<resource>
<directory>${project.build.sourceDirectory}/META-INF</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
我需要做同樣的事情來複制reqiured EJB-xml和得到它通過簡單地增加一個額外的資源合作目錄到POM的「構建」部分(這是在additon到Java的默認位置/主/資源):
<build>
<resources>
<resource>
<directory>${project.basedir}/directoryA</directory>
</resource>
</resources>
...
</build>
這是對Maven 2,是嗎? – 2009-11-11 18:19:54
是的..副標題。 – Jared 2009-11-11 18:20:51
這更多是因爲Maven 1有一個屬性:) – 2009-11-11 19:06:11