2009-11-11 32 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> 
相关问题