1

私はモジョのアプリアセンブラーを使用しています。私がする必要があるのは、プロジェクトの特定のパス (たとえば%BASEDIR%\resources) をクラスパスに追加する必要があることです。現在、クラスパスにのみ追加%REPO%しています。pom.xml でどのような変更を行う必要がありますか。私はすでに以下のコードを提供しています。

<configurationDirectory>/some/path</configurationDirectory>
<includeConfigurationDirectoryInClasspath>true</includeConfigurationDirectoryInClasspath>

出力バッチファイルには次のものが含まれます

set CLASSPATH=%BASEDIR%\\..\SOME\PATH;%REPO%\abc.jar

私の最終的な結果はどうあるべきか...

set CLASSPATH=%BASEDIR%\\..\SOME\PATH;%REPO%\abc.jar;%BASEDIR%\resources

上記の結果を達成するために pom.xml にどのような変更を組み込む必要がありますか?

4

1 に答える 1

0

この質問は、さまざまな jdbc ドライバーやユーザー プラグインを許可するなど、多くの場合に非常に役立ちます。私の場合、jrebel をビルドしたかったので、クラスパスを変更し、ビルド ディレクトリによって jar を切り替える必要がありました。しかし、ニーズに合わせてスクリプトを変更することはそれほど難しくないと思います。maven 3.0.3 以降、すべてのプラグインが pom.xml とまったく同じ順序で実行されるため、maven >= 3.0.3 が必要であることに注意してください。したがって、このプラグインは appassemblyr プラグイン呼び出しの直後に配置してください。

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-enforcer-plugin</artifactId>
    <version>1.3.1</version>
    <executions>
      <execution>
        <id>enforce-beanshell</id>
        <phase>package</phase>
        <goals>
          <goal>enforce</goal>
        </goals>
        <configuration>
          <rules>
            <evaluateBeanshell>
              <condition>
                  import java.io.File;
                  import java.nio.file.*;
                  import java.nio.charset.Charset;
                  import java.nio.charset.StandardCharsets;

                  print("replace jrebel classpath in ${basedir}/dist/bin/rebelServer");
                  Path path = Paths.get("${basedir}/dist/bin/rebelServer", new String[]{});
                  Charset charset = StandardCharsets.UTF_8;

                  String content = new String(Files.readAllBytes(path), charset);
                  content = content.replaceAll(
                    "\"\\$REPO\"/kic/engine/CoreEngine/[^/]+/CoreEngine\\-[^;:/]+\\.jar", 
                    "${basedir}/build/classes");

                  Files.write(
                    path, 
                    content.getBytes(charset),
                    new OpenOption[]{StandardOpenOption.CREATE,StandardOpenOption.TRUNCATE_EXISTING,StandardOpenOption.WRITE}
                  );

                  true;
              </condition>
            </evaluateBeanshell>
          </rules>
          <fail>false</fail>
        </configuration>
      </execution>
    </executions>  
  </plugin>
于 2014-03-07T12:34:17.527 に答える