代码之家  ›  专栏  ›  技术社区  ›  Jared

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

  •  3
  • Jared  · 技术社区  · 16 年前

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

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

    你能给我指一下正确的方向吗?

    4 回复  |  直到 16 年前
        1
  •  2
  •   Pascal Thivent    16 年前

    事实上 maven ejb插件 META-INF/ejb-jar.xml (位置在EjbMojo中是硬编码的),否则在构建ejb2.X时,构建将在打包时失败(这是有意义的)。

    因此,实现目标的一种方法是使用 directoryA (假设 目录 在一个资源目录中,如 src/main/resources 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>
    

        2
  •  1
  •   Xelast    16 年前

    插件在build.outputdirectory/META-INF中查找ejb-jar.xml,正如我在pligin源文件中看到的那样 可以使用资源插件复制所需的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>
    

        3
  •  1
  •   user4603207    16 年前

    我需要做同样的事情,只需在POM的“build”部分添加一个额外的资源目录(它是java/main/resources的默认位置的补充),就可以让它工作:

    <build>
        <resources>
            <resource>
                <directory>${project.basedir}/directoryA</directory>
            </resource>
        </resources>
    ...
    </build>
    
        4
  •  -1
  •   cjstehno    16 年前

    “outputDirectory”配置属性是否有效( http://maven.apache.org/plugins/maven-ejb-plugin/ejb-mojo.html#outputDirectory )? 我看到前面提到的安特伦例子中已经提出了这一点;但是,此配置属性在ejb插件本身中可用(请参见链接)。或者,您是说您只想移动ejb-jar.xml?

    推荐文章