没有源更改时,我可以不运行shade插件吗?

时间:2015-02-27 09:03:17

标签: maven maven-shade-plugin

我能否以这种方式配置maven shade插件,当没有源更改时,它不会再次创建着色插件(并留下旧的插件) - 在我不使用“clean”的情况下。

2 个答案:

答案 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
    }
}