我能否以这种方式配置maven shade插件,当没有源更改时,它不会再次创建着色插件(并留下旧的插件) - 在我不使用“clean”的情况下。
答案 0 :(得分:0)
因为我知道答案是否定的(但我只是再次通过插件文档)。由于编译器识别.java文件的更改并跳过编译,如果没有任何改变,我的第一个猜测是将插件绑定到默认生命周期的process-classes
阶段,这显然会引发错误(为我自己说话我只是试试这样在我实际考虑它之前的事情...逻辑上它早期的插件包装" uberJar"然而)。
但是,如果您能够以任何方式(我不知道如何)跳过默认生命周期的package
阶段,如果没有任何内容(包括资源)发生更改,则插件也将无法运行。
另请注意,只要您不继续执行默认生命周期的package
阶段(例如mvn prepare-package
并且在我的任何一个用例中都没有那么重要,该插件就不会被触发所以我只会运行mvn test
,除非我真的需要打包和/或安装的东西。
我还必须承认我只使用插件进行"逆向工程"某些项目设置中我只想要我/目标文件夹中该项目的所有内容" :)
答案 1 :(得分:0)
也遇到了这个问题。
如此实现我自己的着色器:
https://maven.apache.org/plugins/maven-shade-plugin/examples/use-shader-other-impl.html
我想知道是否有更简单的方法。
@Component( role = Shader.class, hint = "mock" )
public class MockShader extends DefaultShader
{
public void shade( Set<File> jars,
File uberJar,
List<Filter> filters,
List<Relocator> relocators,
List<ResourceTransformer> resourceTransformers )
throws IOException, MojoExecutionException
{
//pseudo code
if source code changes
call super.shade(.......)
else
do nothing
}
}