Добавление classpath с помощью appassembler-maven-plugin для генерации командного файла
Я использую appassembler от mojo. Что мне нужно сделать, это я должен добавить перикулярный путь проекта (скажем, %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 для достижения вышеуказанного результата?
1 ответ
Этот вопрос действительно полезен во многих случаях, таких как использование различных драйверов jdbc или пользовательских плагинов. В моем случае я хотел получить сборку jrebel, и поэтому мне пришлось изменить путь к классу и переключить jar в соответствии с каталогом сборки. Но я думаю, что не очень сложно модифицировать скрипт под свои нужды. Обратите внимание, что вам нужен maven >= 3.0.3, поскольку начиная с maven 3.0.3 все ваши плагины выполняются в том же порядке, что и в вашем pom.xml. Так что ставьте этот плагин сразу после вызова вашего плагина appassembler.
<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>