0

複数のプロジェクトを含むワークスペースがあります。すべて Maven プロジェクトです。プロジェクトの 1 つのターゲット ディレクトリには、ビルド後のバッチ ファイルが含まれています。ここで、このバッチ ファイルを実行するには、ワークスペース内の他のプロジェクトの 1 つが必要です。したがって、これを達成するために新しい依存関係を導入することなく、現在のワークスペースへのパスをプログラムで取得したいと考えています。これを行う方法を知っている人はいますか?

編集 1: ワークスペースに親 Maven プロジェクトがあります。その子のターゲット ディレクトリの 1 つに、バッチ ファイルが含まれています。親の別の子 (テスト プロジェクト) は、バッチ ファイルを実行する必要があります。Maven basedir 変数を使用してバッチ ファイルを取得できますが、これは見栄えが悪く、Eclipse で個別のテストを実行している場合には機能しません。ですから、その解決策は避けたいと思います。

4

2 に答える 2

0

maven-antrun-pluginはどうですか?それはきれいではありませんが、仕事を成し遂げます:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.7</version>
    <executions> 
        <execution> 
            <id><!-- insert an id --></id> 
            <phase><!-- insert a maven lifecycle phase --></phase> 
            <configuration> 
                <tasks> 
                    <exec 
                        dir="${basedir}" 
                        executable="${basedir}/src/main/sh/your-script.sh" 
                        failonerror="true"> 
                        <arg line="arg1 arg2 arg3" /> 
                    </exec> 
                </tasks> 
            </configuration> 
            <goals> 
                <goal>run</goal> 
            </goals> 
        </execution> 
    </executions>
</plugin>

参照: http://maven.apache.org/plugins/maven-antrun-plugin/usage.html

于 2012-11-16T21:45:17.097 に答える
0

問題は、Eclipse のプロジェクトが必ずしもワークスペース ディレクトリに格納されていないことです。ファイルシステムのどこにでもある可能性があります。これは、ワークスペースがどこにあるかを知っているだけでは、必ずしもバッチ ファイルを見つけるのに役立つとは限らないことを意味します。

例: 私のワークスペースは です$HOME/workspaceが、すべてのプロジェクト (作業コピー) は にあり$HOME/code/projectます。ワークスペースを特定できることは、あまり役に立ちません。プロジェクトはワークスペースの外に存在することができ、 File -> Importを使用して Eclipse に表示されます。

おそらく、build-helper-maven-pluginのattach-artifactゴールを使用して、バッチ ファイルをビルドに「添付」することをお勧めします。ここにそれを行う方法の例があります。

  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <version>1.7</version>
    <executions>
      <execution>
        <id>attach-artifacts</id>
        <phase>package</phase>
        <goals>
          <goal>attach-artifact</goal>
        </goals>
        <configuration>
          <artifacts>
            <artifact>
              <file>script.bat</file>
              <type>bat</type>
            </artifact>
          </artifacts>
        </configuration>
      </execution>
    </executions>
  </plugin>

次に、他のプロジェクトは、maven-dependency-plugin のコピー ゴールを使用して、スクリプトを独自のディレクトリに解決し、そこから実行できます。

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>2.5.1</version>
    <executions>
      <execution>
        <id>copy</id>
        <phase>package</phase>
        <goals>
          <goal>copy</goal>
        </goals>
        <configuration>
          <artifactItems>
            <artifactItem>
              <groupId>...</groupId>
              <artifactId>...</artifactId>
              <version>...</version>
              <type>bat</type>
              <overWrite>true</overWrite>
            </artifactItem>
          </artifactItems>
          <outputDirectory>${project.build.directory}/scripts</outputDirectory>
          <overWriteSnapshots>true</overWriteSnapshots>
        </configuration>
      </execution>
    </executions>
  </plugin>
于 2012-11-16T17:29:58.010 に答える