java - Maven:在生命周期之外构建任务(更新/复制文件等)?

标签 java maven maven-antrun-plugin build-management

使用 Maven 时管理构建任务的流行方法是什么?我目前正在使用 Maven 进行依赖管理,但我需要定义几个可以随时独立于生命周期执行的“任务”,类似于 Ant 或 Rake 提供的功能;只是一个简单的“函数”,每当通过名称调用时,它都会执行一系列步骤。

例如,一个“任务”是从用户提供的文件夹中获取一个 jar 文件,使用 将其安装在与我的 Maven 模块之一关联的本地 Maven 存储库中mvn install:install-file -DlocalRepositoryPath=repo 命令,并更改该模块的 pom.xml 以指向新版本的 jar。此任务与生命周期无关,它只是执行某些特定操作的一般任务,因此我不必手动执行此操作,可以随时通过键入例如执行mvn 任务:update-jar

另一个例子是一个“任务”,它删除我的一个 Maven 模块内的目录内容,然后将内容从用户提供的目录复制到空目录中。再说一次,这个任务与 Maven 或依赖项无关,但最好不要一直手动执行。

人们如何编写这些任务 - 这一定是一个常见问题?我知道 maven 提供了 antrun 插件,但据我所知它只能绑定(bind)到 Maven 生命周期阶段,这不是我想要的。除了 Maven 之外,我还可以使用 Ant 和 build.xml 文件,但如果 Maven 可以以某种方式配置为自行执行我想要的操作,那就太愚蠢了。另外,需要 Maven 和 Ant 来管理我的项目似乎不太理想。

最佳答案

如果您坚持让您的构建工作像这样,Maven 将不是您的正确选择。

但是,例如,如果您只想进行依赖项管理,您还有其他选择

  1. Gradle
  2. Ivy + Ant

它们为您使用 Maven 存储库提供依赖管理的直接支持,同时让您完全控制构建脚本的流程。

关于java - Maven:在生命周期之外构建任务(更新/复制文件等)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21859092/

相关文章:

java - 使用 native 查询从 Spring Data 返回自定义对象

java - 订阅主题突然抛出 "java.io.IOException: InternalServerError"

maven - Docker的Maven插件(例如与所需的数据库一起运行)

java - 为什么我的 Maven 找不到 stripe 库?

java - 从 Maven 运行特定的独立 ant 目标

maven-antrun-plugin 返回插件未找到

java - 对于参数类型 Constante,运算符 + 未定义

java - JVM如何识别标记接口(interface)?

java - 子项目pom中的父pom版本

maven - 如何在不将执行附加到 maven 阶段的情况下调用 maven-antrun-plugin 目标?