美文网首页
maven插件顺序与ClassNotFound

maven插件顺序与ClassNotFound

作者: 爱蛇 | 来源:发表于2017-03-17 20:29 被阅读0次

    闲聊

    最近在将原有单一应用架构的项目升级为分布式项目结构,按照不同的功能,划分成不同的独立运行服务,每个服务都以jar运行。

    问题

    发现用java -jar来运行 服务的时候,提示ClassNotFound,找了一下META-INF/MANIFEST.MF文件,发现classpath 没有项目所依赖的jar包。

    maven里有两个插件影响MF文件的生成: maven-jar-plugin 跟 maven-dependency-plugin
    maven-jar-plugin:用于生成jar包,包括MF文件的描述信息等配置,其中包括了classpath的配置,这里会扫描指定依赖的包来进行配置
    maven-dependency-plugin:用于将依赖的jar包复制到指定的目录下

    原因

    由于插件顺序为 : 1.maven-jar-plugin => 2.maven-dependency-plugin
    导致了在生成MF文件之前还没有将依赖的jar包汇合好,就已经开始写入MF文件的classpath属性。

    解决

    1.将两个插件顺序互换 maven-dependency-plugin => maven-jar-plugin
    2.将插件顺序生效, 调用mvn clean 清空依赖包的集合目录
    如果不执行mvn clean ,maven-jar-plugin 插件会将旧的jar包扫描到MF文件classpath中

    参考信息:
    mvn clean 与mvn clean install区别
    http://blog.csdn.net/abc86319253/article/details/44019881

    相关文章

      网友评论

          本文标题:maven插件顺序与ClassNotFound

          本文链接:https://www.haomeiwen.com/subject/kndynttx.html