使用maven构建EJB项目时,maven希望ejb-jar.xml位于META-INF /中。然而;我需要能够将它放在目录A / META-INF中。
maven-ejb-plugin似乎没有提供用于指定ejb-jar.xml所在位置的参数。
你能指出我正确的方向吗?
答案 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吗?