Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Maven轻松复制/重命名/删除文件(如在Ant中)_Maven_Ant_Profiles - Fatal编程技术网

如何使用Maven轻松复制/重命名/删除文件(如在Ant中)

如何使用Maven轻松复制/重命名/删除文件(如在Ant中),maven,ant,profiles,Maven,Ant,Profiles,我正在做一个项目,并使用Maven来构建它。该项目是一个相当大的JavaWeb应用程序,应该可以同时使用Mysql和Oracle数据库 问题在于,源代码中有一些特定的注释与这两个数据库中的任何一个相关,加上一些其他差异,因此我不得不在为这两个数据库中的一个构建应用程序之前手动注释/取消注释部分代码 基本上,我希望实现的是让我的构建脚本(可能通过Maven概要文件)在构建之前自动切换源类,具体取决于我希望war针对的数据库 简单地说,我们的想法是拥有MyClass.oracle和MyClass.m

我正在做一个项目,并使用Maven来构建它。该项目是一个相当大的JavaWeb应用程序,应该可以同时使用Mysql和Oracle数据库

问题在于,源代码中有一些特定的注释与这两个数据库中的任何一个相关,加上一些其他差异,因此我不得不在为这两个数据库中的一个构建应用程序之前手动注释/取消注释部分代码

基本上,我希望实现的是让我的构建脚本(可能通过Maven概要文件)在构建之前自动切换源类,具体取决于我希望war针对的数据库

简单地说,我们的想法是拥有MyClass.oracle和MyClass.mysql,根据我的构建配置文件,我应该在source dir中移动其中一个,将其重命名为MyClass和build。对于某些包、类以及配置文件,应该这样做

我有没有办法通过“纯”Maven实现它?到目前为止,我遇到的唯一解决方案是使用antrun插件并在其中引用Ant build.xml

谢谢,


Mattia

一个纯maven解决方案是开发自己的maven插件。根据您的需求,这可能是一种过激行为,但这一点也不难,您可以看到如何实现这一点。

这是Maven的一个限制。Maven的目的之一是不使用构建脚本。你应该简单地使用可用的插件,并以正确的方式设置你的项目,神奇的是,一切都会建立起来

有一个解决方案:使用Ant。当然,不是用Ant重做整个项目,而是用插件,您可以在Maven构建生命周期的不同阶段运行一些Ant任务

我已经很久没有使用它了,所以我不打算尝试编写一个测试
pom.xml
,但我不记得它很难使用


当然,正确的Maven解决方案是将项目划分为“公共核心”代码,然后是使用“公共核心”的单独Oracle和MySql客户机。顺便说一下,我希望你没有修补源代码。相反,您使用的是一个属性文件。Maven的方法是将代码库的公共部分分离到一个公共模块中,然后为MySQL和Oracle创建两个独立的项目。见: