2009-11-11 68 views
3

當使用maven構建我的EJB項目時,maven期望ejb-jar.xml位於META-INF /中。然而;我需要能夠把它放在directoryA/META-INF。如何在我的maven項目中更改ejb-jar.xml的位置?

maven-ejb-plugin似乎沒有提供用於指定ejb-jar.xml的位置的參數。

您能否指點我正確的方向?

+0

這是對Maven 2,是嗎? – 2009-11-11 18:19:54

+0

是的..副標題。 – Jared 2009-11-11 18:20:51

+0

這更多是因爲Maven 1有一個屬性:) – 2009-11-11 19:06:11

回答

2

事實上,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> 

我不覺得這是非常乾淨的,但它的工作原理。

+0

我最終不得不使用這種方法(儘管我不喜歡它比任何更多)。必須重新安排一些調用(使一個目錄第一等),但基本的想法奏效。謝謝。 – Jared 2009-11-12 14:22:29

-1

通過「outputDirectory」配置屬性工作(http://maven.apache.org/plugins/maven-ejb-plugin/ejb-mojo.html#outputDirectory)?我看到它在前面提到的antrun例子中已經提出;然而,這個配置屬性在ejb插件本身中可用(請參閱鏈接)。或者,你是說你只需要移動ejb-jar.xml?

+0

否 - 輸出目錄將更改輸出文件的位置。我需要更改INPUT文件的位置(從何處獲取文件,而不是在構建完成時將輸出置於何處)。 – Jared 2009-11-11 18:55:55

1

插件的外觀在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> 

1

我需要做同樣的事情來複制reqiured EJB-xml和得到它通過簡單地增加一個額外的資源合作目錄到POM的「構建」部分(這是在additon到Java的默認位置/主/資源):

<build> 
    <resources> 
     <resource> 
      <directory>${project.basedir}/directoryA</directory> 
     </resource> 
    </resources> 
... 
</build> 
相關問題