当使用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