0

私はmaven / antにかなり慣れていないので、私の質問がばかげているように聞こえる場合はすみません...

私が取り組んでいるアプリケーションでは、仮想マシン (Amazon EC2 インスタンスなど) を初期化し、JAR ファイルをそのマシンにアップロードして、最後に実行する必要があります。実行するたびに、ランタイム引数異なる場合があります。

これを行う最善の方法は何ですか?これが機能するには、JRE に加えて、どのフレームワーク/ライブラリ (maven や ant など) をその仮想マシンにインストールする必要がありますか?

4

3 に答える 3

1

に固執する場合は、次Mavenのように jar のアップロード プロセスを攻撃できます。install phase

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>
...

次に発行します。

mvn clean install "-DtargetNode=user:pass@machine"

必要に応じて、アップロードされた jar をターゲット マシンで実行するスクリプトを記述します。

于 2012-09-04T18:52:18.647 に答える
0

最善の方法は、必要なすべてを実行するシェルスクリプトを作成することです。マシンがUNIXライクな場合は、ssh、scp(sshを使用)を使用してこれらすべてを実現できます。

sshを使用すると、リモートシェルコマンドを実行できます。

例(all_in_one.sh):

args=$1
arg2=$2
etc.
ssh admin@amazon_instance << end
/home/admin/bin/startAmazonVM.sh $arg1
end

scp mylocal.jar admin@amazon_instance:/home/admin/server/libraries/

ssh admin@amazon_instance << end
$JAVA_HOME/bin/java -jar /home/admin/server/libraries/mylocal.jar $arg2
end

次に、たとえばall_in_one.shを実行できます(>> output.txtを追加して実行出力ファイルを作成し、それを解析してプロセスを検証できます)

Windowsで作業している場合は、CygwinまたはMinGWをインストールするか、antを使用して、他のツールが最も得意とすることを実行するために、Windowsでタスクを構成するためにより多くの時間を費やしてください。

于 2012-09-04T14:39:02.223 に答える
0

Ant/Maven をリモートでデプロイする必要はないでしょう。

ssh代わりに/scpそのマシンに乗ってもらえますか? Ant にはsshexecおよびscpタスクがあり、リモートでコピーして実行することができます。

于 2012-09-04T14:07:05.577 に答える