![]() |
1
108
不要回避Antrun插件。仅仅因为一些人倾向于认为蚂蚁和小牛是对立的,他们不是。如果需要执行一些不可避免的一次性自定义,请使用复制任务:
在回答这个问题时,我将重点放在你所问的细节上。如何复制文件?这个问题和变量名让我想到了一个更大的问题,比如:“有没有更好的方法来处理服务器配置?”使用maven作为构建系统来生成可部署的工件,然后在单独的模块中或在其他地方执行这些定制。如果您共享了更多的构建环境,那么可能有更好的方法——有插件来提供一些服务器。可以附加一个在服务器根目录中解包的程序集吗?您使用的服务器是什么? 我相信还有更好的方法。 |
![]() |
2
128
|
![]() |
3
26
要复制文件,请使用:
要复制带有子文件夹的文件夹,请使用下一个配置:
|
![]() |
4
18
Maven依赖插件节省了我很多时间来处理Ant任务:
这个 dependency:copy 是documentend,并且具有更有用的目标,如unpack。 |
![]() |
5
14
对于简单的复制任务,我可以推荐 copy-rename-maven-plugin . 它是直截了当和简单易用的:
如果要复制多个文件,请替换
此外,如果需要,您可以在多个阶段中指定多个执行,第二个目标是“重命名”,它只执行它所说的操作,而配置的其余部分保持不变。有关更多用法示例,请参阅 Usage-Page . 注释 :此插件只能复制文件,不能复制目录。(感谢@james.garriss找到这个限制。) |
![]() |
6
6
上面的Ant解决方案是最容易配置的,但是我很幸运地使用了Atlassian的Maven上载插件。我找不到好的文档,以下是我如何使用它:
上面引用的“$jboss.host”等变量在my ~/.m2/settings.xml中定义,并使用maven概要文件激活。这个解决方案不局限于JBoss,这就是我命名变量的地方。我有一个dev、test和live的配置文件。因此,要将EAR上载到测试环境中的JBoss实例,我将执行以下操作:
以下是settings.xml中的一个截图:
笔记: 具有此插件的Atlassian Maven repo位于此处: https://maven.atlassian.com/public/ 我建议下载源代码并查看里面的文档,以查看插件提供的所有功能。 ` |
![]() |
7
5
好吧,Maven不应该擅长做精细的任务,它不是bash或ant这样的脚本语言,它是声明性的——你说——我需要一场战争,或者一只耳朵,然后你就明白了。然而,如果你需要定制战争或耳朵内部的样子,你会遇到一个问题。它不像Ant那样是程序性的,而是声明性的。 这在开始时有一些好处,在结束时可能有很多缺点。 我想最初的概念是有很好的插件,即“只是工作”,但现实情况是不同的,如果你做非标准的东西。 但是,如果您在POM中投入足够的精力和很少的定制插件,您将获得一个更好的构建环境,例如,使用Ant(当然取决于您的项目,但对于更大的项目,它会变得越来越真实)。 |
![]() |
8
4
我有很好的经验 copy-maven-plugin . 与Maven资源插件相比,它有一个更方便和简洁的语法。 |
![]() |
9
4
复制任意文件的一般方法是利用
Maven Wagon
运输抽象。它可以通过协议处理不同的目的地,比如
有几个插件提供了通过使用
|
![]() |
10
3
我只能假设您的$project.server.config属性是自定义的,并且不在标准目录布局中。 如果是这样,那么我就使用复制任务。 |
![]() |
11
2
另一种方法是使用程序集插件将这些东西捆绑到工件中。然后您可以使用依赖插件将这些文件解包到您想要的地方。在依赖插件中也有复制目标来复制工件。 |
![]() |
12
1
我能够为这个答案拼凑出许多不同的来源:
从
然后运行命令:(-x用于调试)
|
![]() |
13
-1
总结一下上面的一些好答案: 马文 旨在构建模块并将结果复制到Maven存储库。任何将模块复制到部署/安装程序输入目录的操作都必须在Maven核心功能的上下文之外完成,例如使用Ant/Maven 复制 命令。 |