我有一个Java web应用程序,为了在oc4j应用服务器上使用我的项目,必须在构建生命周期中修补它,以避免出现几个问题。实际上,我是通过maven-antrun-plugin来做到这一点的,它的工作效果很好。我必须删除、复制一些特殊的库到WEB-INF/lib中并编辑web.xml,以避免与EL函数的冲突和类加载问题。
根据maven生命周期阶段,我选择了阶段prepare-package:这个阶段是在打包war文件之前执行的,但不幸的是,在(重新)源被复制到临时工作dir之前也是如此。我不喜欢在源代码文件夹上工作,因为它们处于版本控制之下,我不想让我的同事因为构建工具修改了它们而不小心地提交它们。
因此,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>发布于 2010-07-13 09:05:05
你就不能用侧写吗?也许是这样的:
<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>发布于 2010-07-13 09:00:47
我必须删除、复制一些特殊的库到WEB/lib并编辑web.xml,以避免与EL函数的冲突和类加载问题。
听起来你至少可以用构建概要文件来代替。你对上述问题的动机有点短,但如果你详细说明,我们可以更好地判断这一点。
https://stackoverflow.com/questions/3226679
复制相似问题