java—如何使用一些用户定义的参数在远程计算机上部署jar文件

java—如何使用一些用户定义的参数在远程计算机上部署jar文件,java,maven,deployment,jar,virtual-machine,Java,Maven,Deployment,Jar,Virtual Machine,我是maven/ant的新手,因此如果我的问题听起来很傻,请原谅 在我正在开发的应用程序中,我必须初始化一个虚拟机(例如AmazonEC2实例),然后将一个JAR文件上传到该机器,最后运行它——每次我想要运行它时,运行时参数可能不同 这样做的最佳方式是什么?除了JRE,我还需要在该虚拟机上安装哪些框架/库(如maven或ant)才能使其正常工作?您可能不需要远程部署ant/maven 你能改为ssh/scp到那台机器上吗?Ant有许多功能和任务,允许您远程复制和运行内容。最好的方法是创建满足您所

我是maven/ant的新手,因此如果我的问题听起来很傻,请原谅

在我正在开发的应用程序中,我必须初始化一个虚拟机(例如AmazonEC2实例),然后将一个JAR文件上传到该机器,最后运行它——每次我想要运行它时,运行时参数可能不同


这样做的最佳方式是什么?除了JRE,我还需要在该虚拟机上安装哪些框架/库(如maven或ant)才能使其正常工作?

您可能不需要远程部署ant/maven


你能改为
ssh
/
scp
到那台机器上吗?Ant有许多功能和任务,允许您远程复制和运行内容。

最好的方法是创建满足您所有需要的shell脚本。如果机器是类unix的, 您可以通过ssh、scp(使用ssh)实现所有这些

使用ssh,您可以执行远程shell命令

示例(all_in_one.sh):

args=$1
arg2=2美元
等
sshadmin@amazon_instanceoutput.txt创建执行输出文件,然后解析该文件以验证流程)


如果您在Windows上工作,请安装Cygwin或MinGW,或者使用ant并花费更多的时间在其中配置任务,以完成其他工具最擅长的工作。

如果您坚持使用
Maven
,您可以攻击jar上传过程到
安装阶段,如下所示:

pom.xml:

...
<plugins>
...
  <plugin>
    <artifactId>maven-antrun-plugin</artifactId>
    <configuration>
      <tasks>
        <scp todir="${targetNode}:~/" trust="true" failonerror="true"
          file="${project.build.directory}/${project.build.finalName}.jar" />
      </tasks>
    </configuration>
    <executions>
      <execution>
        <id>upload</id>
        <phase>install</phase>
        <goals>
          <goal>run</goal>
        </goals>
      </execution>
    </executions>
    <dependencies>
      <dependency>
        <groupId>org.apache.ant</groupId>
        <artifactId>ant-jsch</artifactId>
        <version>1.8.3</version>
      </dependency>
    </dependencies>
  </plugin>
...
</plugins>
...

可以选择编写一个脚本,在目标机器上运行上传的jar。

这不是Maven的工作。为此,最好使用脚本、CI解决方案或类似Chef或Puppet的东西。
...
<plugins>
...
  <plugin>
    <artifactId>maven-antrun-plugin</artifactId>
    <configuration>
      <tasks>
        <scp todir="${targetNode}:~/" trust="true" failonerror="true"
          file="${project.build.directory}/${project.build.finalName}.jar" />
      </tasks>
    </configuration>
    <executions>
      <execution>
        <id>upload</id>
        <phase>install</phase>
        <goals>
          <goal>run</goal>
        </goals>
      </execution>
    </executions>
    <dependencies>
      <dependency>
        <groupId>org.apache.ant</groupId>
        <artifactId>ant-jsch</artifactId>
        <version>1.8.3</version>
      </dependency>
    </dependencies>
  </plugin>
...
</plugins>
...
mvn clean install "-DtargetNode=user:pass@machine"