8

wagon-maven-pluginを使用してWARファイルをサーバーにscpしています。正常に動作します。次のステップは、サーバー上でいくつかのコマンド(mkdirなど)を実行することです。それを行うのに役立つプラグインはありますか?wagon-maven-pluginを使用してそれを解決する方法はありますか?

私はmvnに比較的慣れていません。どんな助けでもいただければ幸いです。

助言がありますか?

4

1 に答える 1

14

exec-maven-plugin で ssh コマンドを実行できました。これは、あらゆる種類のハックを行い、コマンドを実行するための強力な Maven プラグインです。ソリューションに興味のある方へ

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>exec-maven-plugin</artifactId>
  <version>1.2.1</version>
  <executions>
    <execution>
      <phase>install</phase>
      <goals>
        <goal>exec</goal>
      </goals>
    </execution>
  </executions>
  <configuration>
    <executable>sh</executable>
    <arguments>
      <!-- Shell script location -->
      <argument>runscript.sh</argument>
      <!-- arg #1 -->
      <argument>${file_1}</argument>
    </arguments>
  </configuration>
</plugin>

私が見つけた別の解決策は、maven-antrun-plugin を実行することでした。ANT タスクを実行し、多くの依存関係があるため、お勧めしません。ただし、Maven を介して ant タスクを実行する必要がある場合は便利です。

<plugin>
  <inherited>false</inherited>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-antrun-plugin</artifactId>
  <version>1.6</version>
  <configuration>
    <target>
      <loadproperties srcFile="deploy.properties" />
      <ftp action="send" server="server"
           remotedir="/a/b" userid="usr"
           password="pw" depends="no"
           verbose="yes" binary="yes">
        <fileset dir="modules/my-module/target">
          <include name="file.zip" />
        </fileset>
      </ftp>

      <!-- calls deploy script -->
      <sshexec host="host" trust="yes"
               username="usr" password="pw"
               command="sh /my/script.sh" />

      <!-- SSH -->
      <taskdef name="sshexec"
               classname="org.apache.tools.ant.taskdefs.optional.ssh.SSHExec"
               classpathref="maven.plugin.classpath" />
      <taskdef name="ftp"
               classname="org.apache.tools.ant.taskdefs.optional.net.FTP"
               classpathref="maven.plugin.classpath" />
    </target>
  </configuration>
  ...
  <dependencies>
    <dependency>
      <groupId>commons-net</groupId>
      <artifactId>commons-net</artifactId>
      <version>1.4.1</version>
    </dependency>
    <dependency>
      <groupId>ant</groupId>
      <artifactId>ant-commons-net</artifactId>
      <version>1.6.5</version>
    </dependency>
    <dependency>
      <groupId>ant</groupId>
      <artifactId>ant-jsch</artifactId>
      <version>1.6.5</version>
    </dependency>
    <dependency>
      <groupId>jsch</groupId>
      <artifactId>jsch</artifactId>
      <version>0.1.29</version>
    </dependency>
  </dependencies>
</plugin>

それが役立つことを願っています!

于 2012-09-20T02:28:18.607 に答える