Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.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
Java 在maven安装后运行脚本_Java_Bash_Shell_Maven_Maven 3 - Fatal编程技术网

Java 在maven安装后运行脚本

Java 在maven安装后运行脚本,java,bash,shell,maven,maven-3,Java,Bash,Shell,Maven,Maven 3,我有一个Maven项目,安装该项目后,我需要运行一个脚本。我想使这个过程自动化。我的猜测是,通过在pom文件中添加一些东西,我可以将其自动化,但到目前为止,我还没有发现如何在安装后运行脚本。我只在maven项目完成安装之前找到了如何运行脚本 那么,在Maven项目安装完成后,我如何运行脚本呢?对于纯Maven驱动的方法,您要寻找的答案是exec Maven plugin的exec目标,这个答案适用于: 编辑:OP表示上述内容对他不起作用 替代方法:我刚刚在我自己的项目中尝试了以下方法,它在安装阶

我有一个Maven项目,安装该项目后,我需要运行一个脚本。我想使这个过程自动化。我的猜测是,通过在pom文件中添加一些东西,我可以将其自动化,但到目前为止,我还没有发现如何在安装后运行脚本。我只在maven项目完成安装之前找到了如何运行脚本


那么,在Maven项目安装完成后,我如何运行脚本呢?

对于纯Maven驱动的方法,您要寻找的答案是
exec Maven plugin
exec
目标,这个答案适用于:

编辑:OP表示上述内容对他不起作用

替代方法:我刚刚在我自己的项目中尝试了以下方法,它在安装阶段的最后,在部署工件之后执行
ls

mvn clean install exec:exec-Dexec.executable=“/bin/ls”-Dexec.args=“/etc”

否则,您可以始终将整个内容包装在脚本中:

#!/bin/bash

set -o errexit

mvn clean install
<your other commands here>
#/bin/bash
set-o errexit
mvn清洁安装

您可以链接命令

$ mvn clean install && myscript.sh || echo "error."

你为什么不能这样做?这将在正常的maven安装阶段之后进行

编辑:如果在它之前添加maven安装插件,maven将按照它们在pom中的顺序运行每个插件

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-install-plugin</artifactId>
    <version>2.5.2</version>
  </plugin>
  <plugin>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.7</version>
    <executions>
      <execution>
        <phase>install</phase>
        <configuration>
          <tasks>
            <exec
              dir="${project.basedir}"
              executable="${project.basedir}/src/main/sh/do-something.sh"
              failonerror="true">
              <arg line="arg1 arg2 arg3 arg4" />
            </exec>
          </tasks>
        </configuration>
        <goals>
          <goal>run</goal>
        </goals>
      </execution>
    </executions>
  </plugin>

org.apache.maven.plugins

将exec maven插件与指定安装阶段的“执行”配置块结合使用。确保它是在maven安装插件之后,因为插件按顺序运行(在同一阶段内)

(内置/插件)
org.apache.maven.plugins
maven安装插件
2.5.2
org.codehaus.mojo
execmaven插件
1.5.0
安装
执行官
做点什么
/部分/目录
--调试
效果非常好

此版本在安装maven之前运行脚本。我用的是maven3,这与整个Maven模型背道而驰。如果您需要运行的脚本是在Maven安装之后出现的,那么它似乎超出了Maven的责任范围。您最好编写一个同时执行maven和安装后脚本的包装器脚本。感谢您的回复。但是如果可能的话,我想要一个pom配置。链接中的解决方案不起作用,脚本在maven安装之前运行。谢谢你的回复。我把它放在pom的build标签中,脚本在maven安装完成安装之前运行。有一个exec插件,认真地说,不要为了让ant链接到exec而链接到ant。不要仅仅为了做maven插件所做的事情而包含ant配置。这使得您的配置维护包括对Maven和Ant的支持!