青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

++wythern++

X presents Y for a better Z

What is shade jar, and what is its purpose.

https://stackoverflow.com/questions/13620281/what-is-the-maven-shade-plugin-used-for-and-why-would-you-want-to-relocate-java


Uber JAR, in short, is a JAR containing everything.

Normally in Maven, we rely on dependency management. An artifact contains only the classes/resources of itself. Maven will be responsible to find out all artifacts (JARs etc) that the project depending on when the project is built.

An uber-jar is something that take all dependencies, and extract the content of the dependencies and put them with the classes/resources of the project itself, in one big JAR. By having such uber-jar, it is easy for execution, because you will need only one big JAR instead of tons of small JARs to run your app. It also ease distribution in some case.

Just a side-note. Avoid using uber-jar as Maven dependency, as it is ruining the dependency resolution feature of Maven. Normally we create uber-jar only for the final artifact for actual deployment or for manual distribution, but not for putting to Maven repository.


Update: I have just discovered I haven't answered one part of the question : "What's the point of renaming the packages of the dependencies?". Here is some brief updates and hopefully will help people having similar question.

Creating uber-jar for ease of deployment is one use case of shade plugin. There are also other common use cases which involve package renaming.

For example, I am developing Foo library, which depends on a specific version (e.g. 1.0) of Bar library. Assuming I cannot make use of other version of Bar lib (because API change, or other technical issues, etc). If I simply declare Bar:1.0 as Foo's dependency in Maven, it is possible to fall into a problem: A Qux project is depending on Foo, and also Bar:2.0 (and it cannot use Bar:1.0 because Qux needs to use new feature in Bar:2.0). Here is the dilemma: should Qux use Bar:1.0 (which Qux's code will not work) or Bar:2.0 (which Foo's code will not work)?

In order to solve this problem, developer of Foo can choose to use shade plugin to rename its usage of Bar, so that all classes in Bar:1.0 jar are embedded in Foo jar, and the package of the embedded Bar classes is changed from com.bar to com.foo.bar. By doing so, Qux can safely depends on Bar:2.0 because now Foo is no longer depending on Bar, and it is using is own copy of "altered" Bar located in another package.

posted on 2017-06-19 11:23 wythern 閱讀(289) 評論(0)  編輯 收藏 引用

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美亚洲一区在线| 亚洲美洲欧洲综合国产一区| 99re66热这里只有精品3直播| 欧美成人精品激情在线观看 | 亚洲精品一区二区三区四区高清 | 亚洲欧美在线一区二区| 国产片一区二区| 免费成年人欧美视频| 欧美二区在线| 中日韩高清电影网| 午夜精品免费视频| 亚洲国产成人在线| 亚洲国产你懂的| 国产精品国内视频| 久久精品水蜜桃av综合天堂| 久久综合久久综合九色| 日韩亚洲欧美在线观看| 亚洲一二三四久久| 国产日韩精品一区二区| 欧美国产亚洲精品久久久8v| 久久久国产一区二区三区| 亚洲免费成人| 国产一区二区日韩精品欧美精品| 欧美成人免费网站| 国产精品麻豆va在线播放| 美国十次了思思久久精品导航| 欧美日韩国产综合新一区| 久久精品30| 欧美日韩在线不卡| 亚洲成人在线免费| 亚洲美女少妇无套啪啪呻吟| 亚洲女同性videos| 亚洲免费精品| 久久久久久网址| 欧美影视一区| 欧美日韩一区不卡| 蜜臀av性久久久久蜜臀aⅴ| 国产精品久久久久999| 亚洲大胆女人| 红杏aⅴ成人免费视频| 一区二区高清视频在线观看| 亚洲国产精品悠悠久久琪琪| 午夜一区二区三区在线观看| 在线视频欧美日韩| 欧美成人午夜剧场免费观看| 久久午夜国产精品| 国产免费成人| 亚洲午夜精品久久久久久app| 亚洲日本中文| 美女亚洲精品| 欧美777四色影视在线| 韩国成人福利片在线播放| 亚洲欧美激情四射在线日| 亚洲午夜未删减在线观看| 欧美日韩国产va另类| 欧美国产综合| 91久久精品国产| 老牛影视一区二区三区| 老司机aⅴ在线精品导航| 狠狠色狠色综合曰曰| 欧美伊人影院| 久久综合精品国产一区二区三区| 国产一区视频网站| 久久国产精品色婷婷| 久久国内精品自在自线400部| 国产欧美日韩精品a在线观看| 亚洲女性裸体视频| 久久国产福利| 一区视频在线播放| 老巨人导航500精品| 亚洲黄色天堂| 亚洲一区二区三区精品动漫| 欧美性淫爽ww久久久久无| 夜夜嗨av一区二区三区| 亚洲免费在线精品一区| 国产欧美精品久久| 久久精品国产亚洲精品| 欧美凹凸一区二区三区视频| 亚洲国产精品va在看黑人| 欧美激情视频一区二区三区在线播放| 亚洲国产欧美一区二区三区久久| 亚洲乱码国产乱码精品精| 欧美四级剧情无删版影片| 亚洲伊人网站| 欧美成年视频| 欧美一站二站| 嫩草影视亚洲| 中文日韩在线视频| 国产香蕉97碰碰久久人人| 欧美专区亚洲专区| 亚洲国产精品小视频| 亚洲一区视频在线观看视频| 国产亚洲免费的视频看| 久久综合一区二区三区| 99精品国产一区二区青青牛奶| 欧美一二区视频| 亚洲韩国青草视频| 国产精品入口| 欧美国产精品人人做人人爱| 一区二区三区四区五区精品视频| 久久经典综合| 一区二区三区视频免费在线观看| 国产日韩欧美在线播放不卡| 欧美高清在线| 欧美在线观看一区| 99国产精品视频免费观看一公开| 久久久91精品国产一区二区精品| 亚洲精品美女在线观看| 国产欧美一区二区精品婷婷| 欧美ab在线视频| 欧美怡红院视频一区二区三区| 亚洲人成网站在线观看播放| 久久久噜噜噜久久| 亚洲欧美日韩在线观看a三区| 亚洲第一免费播放区| 国产精品亚洲综合久久| 欧美华人在线视频| 久久人体大胆视频| 欧美一区二区精品久久911| 99国内精品久久久久久久软件| 久久久久国产精品www| 中日韩美女免费视频网站在线观看| 一区二区在线不卡| 国产精品免费网站| 欧美三级网页| 欧美日韩精品免费观看视一区二区| 久久久久99| 久久久久久夜| 久久久成人精品| 欧美一区二区三区另类| 亚洲一卡二卡三卡四卡五卡| 亚洲三级性片| 亚洲日本成人网| 亚洲欧洲一级| 亚洲啪啪91| 亚洲老司机av| 亚洲精品系列| 99av国产精品欲麻豆| 亚洲精品少妇30p| 亚洲精品久久久蜜桃| 亚洲伦理在线| 夜夜嗨av一区二区三区四季av| 日韩午夜av在线| 一本综合精品| av成人免费| 亚洲一级片在线观看| 亚洲女优在线| 欧美在线一级va免费观看| 久久精品国产亚洲高清剧情介绍| 欧美一区免费| 久久亚裔精品欧美| 蜜桃久久av| 欧美日韩一区在线观看| 欧美午夜激情在线| 国产日韩欧美91| 在线观看欧美| 亚洲美女91| 亚洲校园激情| 久久精品99| 欧美激情一区二区三区不卡| 亚洲国产精品美女| 亚洲午夜在线| 久久五月激情| 欧美日本一道本在线视频| 欧美视频专区一二在线观看| 国产美女精品一区二区三区| 1000部国产精品成人观看| 日韩一区二区免费高清| 久久久久国产一区二区三区| 美女网站久久| 国产精品久久久久婷婷| 精品不卡视频| 中文日韩电影网站| 狂野欧美一区| 艳女tv在线观看国产一区| 欧美亚洲一区三区| 欧美精品色一区二区三区| 国产免费一区二区三区香蕉精| 伊人蜜桃色噜噜激情综合| 国产精品99久久久久久宅男 | 久久久成人精品| 亚洲欧洲精品成人久久奇米网| 在线亚洲精品| 免费成人美女女| 国产区日韩欧美| 亚洲视频www| 欧美高清视频| 午夜精品视频在线| 欧美日韩一级黄| 91久久精品一区| 久久亚洲精品一区二区| 中国女人久久久| 欧美精品三级在线观看| 亚洲大片在线| 久久乐国产精品| 亚洲在线免费| 国产精品jizz在线观看美国| 亚洲激情在线| 免费观看成人www动漫视频| 亚洲欧美日韩在线高清直播|