我有一个JavaEE Web应用程序,为了使用OC4J应用服务器来使用我的项目,它必须在我的构建生命周期中被修补以避免几个问题。实际上我是通过
maven-antrun-plugin
效果很好。我得把一些特殊的图书馆搬到
WEB-INF/lib
并编辑
web.xml
,以避免与EL函数和类加载问题冲突。
根据
maven lifecycle phases
我选择了这个阶段
prepare-package
:此阶段在
war
文件已打包,但不幸的是,(重新)源还未复制到临时工作目录中。我不喜欢处理源文件夹,因为它们受版本控制,我不想让我的同事意外地提交它们,因为构建工具修改了它们。
所以Maven将所有(重新)源代码复制到
target/__finalName__
因为这个文件夹是临时的,将被打包到war文件中。不幸的是,复制和打包是在生命周期中独立完成的。
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>