2016-12-05 74 views
0

我有一个作为可执行JAR部署到AIX机器的应用程序。我使用Maven的阴影来构建一个Uber JAR,该JAR具有我的所有依赖包装在JAR中; Spring,Logback和javax.mail。该应用程序由另一个执行shell脚本的程序调用。这一切都很好。 DBA要求我从JAR中删除所有依赖项,将它们放在AIX机器的目录中,并将这些位置包含在AIX用户的CLASSPATH中。他表示这是最佳做法。我之前在Maven中使用过<scope>provided</scope>标签来不打包Container将提供的依赖关系,但我从来没有用JAR运行过这种类型的请求。这是这种情况下的最佳做法吗?JAR依赖性部署的最佳实践

+0

重复使用?这是迄今为止唯一可靠的答案。 – Hodglem

+0

为什么会有一个独立的lib文件夹,其中包含所有的jar文件,而不是将它们打包成一个简单的可以由'java -jar ...'启动的jar文件?使类路径用户不可知论听起来很奇怪?这可以通过appasseml的maven插件来实现......它可以生成shell脚本来处理类路径生成等...... – khmarbaise

+0

如果您开始重新使用库的某些部分,您将引入一个共享库,使更新更加容易复杂,如果不是不可能...更好的路径自足...... – khmarbaise

回答

0

在Uber-JAR中,依赖关系不可见。但是有很多人需要知道并列出所有的依赖关系,因为他们需要发布应用程序中使用的所有许可证列表(例如gnu,asf ...)。

因此,如果您需要清楚列出所有依赖项,那么Uber-JAR并不是您应该去的最佳做法。