如何在maven项目中更改ejb-jar.xml的位置?

时间:2009-11-11 16:54:15

标签: java maven-2 ejb

使用maven构建EJB项目时,maven希望ejb-jar.xml位于META-INF /中。然而;我需要能够将它放在目录A / META-INF中。

maven-ejb-plugin似乎没有提供用于指定ejb-jar.xml所在位置的参数。

你能指出我正确的方向吗?

4 个答案:

答案 0 :(得分:2)

实际上, maven-ejb-plugin 没有提供任何参数来更改预计在META-INF/ejb-jar.xml可用的部署描述符的位置(该位置是硬编码的)在构建EJB 2.X时,在EjbMojo中构建将在打包时失败(这是有意义的)。

因此,实现目标的一种方法是在打包阶段之前使用 maven-antrun-plugin 来复制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>

我觉得这很干净但是很有效。

答案 1 :(得分:1)

插件在build.outputdirectory / META-INF中查找ejb-jar.xml,正如我在pligin源文件中看到的那样 private static final String EJB_JAR_XML =“META-INF / ejb-jar.xml”; 可以使用资源插件复制reqiured ejb-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>

答案 2 :(得分:1)

我需要做同样的事情并通过简单地将另外的资源目录添加到POM的'build'部分(除了java / main / resources的默认位置)来实现它:

<build>
    <resources>
        <resource>
            <directory>${project.basedir}/directoryA</directory>
        </resource>
    </resources>
...
</build>

答案 3 :(得分:-1)

“outputDirectory”配置属性不起作用(http://maven.apache.org/plugins/maven-ejb-plugin/ejb-mojo.html#outputDirectory)?我看到前面提到的antrun例子已经提出了这个建议;但是,这个配置属性在ejb插件本身中可用(参见链接)。或者,你是说你只想移动ejb-jar.xml吗?