我正在使用mojo的appassembler。我需要做的是我必须在项目路径中添加项目的特定路径(比如%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中应该包含哪些更改才能实现上述结果?
答案 0 :(得分:0)
在许多情况下,例如允许使用不同的jdbc驱动程序或用户插件,这个问题非常有用。在我的情况下,我想有一个jrebel构建,因此我不得不更改类路径并通过构建目录切换jar。但我认为修改脚本以满足您的需求并不是很困难。请注意,您需要maven&gt; = 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>