如何使用maven打包包含我代码的类文件和第三方jar的包装jar?

时间:2018-09-07 13:48:20

标签: java maven jar maven-plugin maven-assembly-plugin

我是Maven的新手,并且面临下面提到的问题-

我想将父/根模块(包含主类)正在使用的所有模块捆绑到一个jar中。

例如:

根应用程序-包含主类并且需要以下所有jar作为依赖项的模块

  • a.jar(使用maven单独构建的子模块jar)-引用spring依赖项
  • b.jar(使用maven单独构建的子模块jar)-引用休眠依赖项
  • c.jar(使用maven单独构建的子模块jar)-引用log4j依赖项

我想为Root应用程序生成jar,它可以包含a,b,c模块的.class / jars,但不应包含用于spring,hibernate等第三方框架的.class文件。

约束-

  • 我不能将整个模块和依赖项捆绑在一个Zip中,而只能在jar中捆绑
  • 如果我将root jar放在classpath上,则该jar下的所有jar /文件都应该在classpath上

让我告知我已经尝试过Maven的  <descriptorRef>jar-with-dependencies</descriptorRef>使用“ maven-assembly-plugin”,但是即使在第三方框架类中,这也使我在jar内分解了(.class文件)文件夹结构。因此,我可以看到

这样的文件夹结构

root-app-1.0.0-SNAPSHOT-jar-with-dependencies.jar \ org \ springframework \ aop \ *。class

我正在寻找类似的东西:

root-app-1.0.0-SNAPSHOT.jar-

  • main.class
  • lib / a.jar(jar或爆炸的.class文件夹结构)
  • lib / b.jar(jar或爆炸的.class文件夹结构)
  • lib / c.jar(jar或爆炸的.class文件夹结构)
  • lib / spring.jar(仅限Jar)
  • lib / hibernate.jar(仅限Jar)
  • lib / log4j.jar(仅限Jar)

最终,无论它们位于/ lib还是根jar内的任何其他位置,main.class都应该可以访问所有jars

0 个答案:

没有答案