哪个maven2生命周期阶段可供选择?

时间:2010-07-12 07:52:03

标签: maven-2

我有一个Java EE-web应用程序,为了将我的项目与oc4j应用程序服务器一起使用,必须在我的构建生命周期中修补它以避免出现多个问题。实际上,我是通过maven-antrun-plugin来做到的,效果很好。我必须删除,将一些特殊库复制到WEB-INF/lib并编辑web.xml,以避免与EL函数和类加载问题发生冲突。

根据maven lifecycle phases我选择阶段prepare-package:此阶段在war文件打包之前执行,但不幸的是,在(重新)源被复制到临时工作目录。我不喜欢在源文件夹上工作,因为它们受版本控制,我不想让我的同事意外地提交它们,因为构建工具修改了它们。

所以maven将所有(重新)源代码复制到target/__finalName__,我想要修复项目以便与oc4j一起使用。因为这个文件夹是临时的,将被打包到war文件中。不幸的是,复制和打包是在生命周期package中完成的。

那么如何才能在复制资源和资源以及真正的包装之间取得进展呢?

prepare-package

的示例

此示例不起作用,因为${project.build.directory}/${build.finalName}不存在,并且在此阶段未复制ojdbc14.jar。

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-antrun-plugin</artifactId>
  <version>1.4</version>
  <executions>
    <execution>
      <id>patch-oc4j</id>
      <phase>prepare-package</phase>
      <goals>
        <goal>run</goal>
      </goals>
      <configuration>
        <tasks>
         <echo>Patching distribution for OC4J</echo>
         <echo>Deleting the obsolete OJDBC library</echo>
         <delete file="${project.build.directory}/${build.finalName}
                       /WEB-INF/lib/ojdbc14.jar" />
         [... more patching ...]
        </tasks>
      </configuration>
    </execution>
  </executions>
</plugin>

2 个答案:

答案 0 :(得分:1)

你不能为此使用个人资料吗?也许是这样的:

<profiles>
  <profile>
    <id>oc4j</id>
    <dependencies>
      <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc14</artifactId>
        <version>10.2.0.4.0</version>
        <scope>provided</scope>
      </dependency>
    </dependencies>
  </profile>
</profiles>

答案 1 :(得分:0)

  

我必须删除,将一些特殊的库复制到WEB-INF / lib并编辑web.xml,以避免与EL函数和类加载问题发生冲突。

听起来你可能,至少部分地用Build Profiles做这件事。你对上述问题的动机有点短,但如果你详细说明我们可以更好地判断......