この質問は、さまざまな 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>