Skip to content

Commit 37f7ead

Browse files
committed
new blogpost
1 parent 9ff78bd commit 37f7ead

File tree

4 files changed

+66
-10
lines changed

4 files changed

+66
-10
lines changed

Text/Section0029.xhtml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,8 @@
6161
<span style="color: #330099; font-weight: bold">&lt;/filters&gt;</span>
6262
<span style="color: #0099FF; font-style: italic">&lt;!-- Additional configuration. --&gt;</span>
6363
<span style="color: #330099; font-weight: bold">&lt;/configuration&gt;</span>
64-
</pre></div>
64+
</pre>
65+
</div>
6566

6667

6768
<p>话再说回来,Assembly Plugin既然并不适合打包uber jar,它的功能是什么呢。其实它主要是为了提供各种对<b>项目本体</b>的灵活打包方式,例如将项目的源码、二进制等打包成tar.gz, tar.bz2, zip等格式,可以通过<a href="http://maven.apache.org/plugins/maven-assembly-plugin/assembly.html">Descriptor</a>对打包的方式进行丰富的自定义配置。</p>

Text/Section0038.xhtml

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
3+
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
4+
5+
<html xmlns="http://www.w3.org/1999/xhtml">
6+
<head>
7+
<title>Maven离线编译方法</title>
8+
<meta name="keywords" content="Others"/>
9+
<link href="../Styles/Style0001.css" type="text/css" rel="stylesheet"/>
10+
</head>
11+
12+
<body>
13+
<h1>Maven离线编译方法</h1>
14+
15+
<p class="date">2021-11-19</p>
16+
17+
<a class="home" href="https://xdcsy.github.io/">&lt; view all posts</a>
18+
19+
<p>有时候我们在把jar包传到某些连不上Maven库的环境后,才发现其中有一点问题需要修改代码。这时候可以到开发机上重新打包再传一遍,但是如果经常需要这样来回就显得有点麻烦。这时候我们可以有另一个选择,就是利用Maven的offline模式在离线环境里面重新编译。</p>
20+
21+
<p>因为离线环境是下载不到Maven依赖包的,首先我们要在开发环境把依赖都打包好,传到离线环境里面:</p>
22+
23+
<p>1、给开发机器新建一个本地Maven依赖库(原本缓存的依赖库一般占用空间会比较大,而其中很多都是当前项目用不到的,因此新建一个空的最好)。Maven的 <span class="code">settings.xml</span> 文件中, <span class="code">&lt;localRepository&gt;&lt;/localRepository&gt;</span> 配置为新的地址。</p>
24+
25+
<p>2、在开发机执行 <span class="code">mvn dependency:go-offline</span> ,缓存所有的依赖到依赖库中</p>
26+
27+
<p>3、但是, <span class="code">mvn dependency:go-offline</span> 不会缓存一些默认Maven插件的jar包(例如resources plugin等)。这些插件是打包需要用到的,不过我们通常不在项目的pom文件中声明,这是因为它们在Maven自带的super pom当中被隐式引入了。但导出依赖的时候它们就不能被自动导出了,所以我们需要用help目标来强制缓存这些插件,运行:</p>
28+
29+
<pre>mvn assembly:help compiler:help enforcer:help exec:help failsafe:help install:help jar:help resources:help surefire:help</pre>
30+
31+
<p>4、我们还需要执行一下准备在离线环境运行的命令,例如 <span class="code">mvn clean package</span> 。否则之后还是会缺少插件,比如clean插件,在执行前是不会自动缓存的。</p>
32+
33+
<p>5、把Maven、开发机的本地依赖库、代码打包传到离线环境</p>
34+
35+
<p>6、配置离线环境中Maven的 <span class="code">settings.xml</span> ,包括 <span class="code">&lt;localRepository&gt;&lt;/localRepository&gt;</span><span class="code">&lt;offline&gt;true&lt;/offline&gt;</span> 这两项</p>
36+
37+
<p>7、把Maven加入PATH,chmod赋权</p>
38+
39+
<p>8、这里有一个额外的步骤,需要删除本地依赖库中所有的 <span class="code">*.repositories</span><span class="code">*.sha1</span><span class="code">*.lastUpdated</span> 文件,否则即使在离线模式,Maven还是会尝试联网,然后报错(应该是Maven的bug):</p>
40+
41+
<pre>find -iname "*.repositories" -exec rm -f {} \; &amp;&amp; \
42+
find -iname "*.sha1" -exec rm -f {} \; &amp;&amp; \
43+
find -iname "*.lastUpdate" -exec rm -f {} \;</pre>
44+
45+
<p>网上也有帖子说直接把依赖库中 .jar 以外的文件全删了也行</p>
46+
47+
<p>9、在离线环境用 -o -nsu 参数执行需要的Maven目标,例如 <span class="code">mvn -nsu -o clean package</span> ,就可以成功离线编译打包了</p>
48+
49+
<p>其中,-o表示离线模式,-nsu表示不检查snapshot版本的更新</p>
50+
51+
52+
<hr/>
53+
<p class="footer">This blog is written in EPUB.
54+
The original file is available for <a href="https://github.com/XDcsy/XDcsy.github.io/raw/main/blog.epub">download</a>.</p>
55+
<p class="footer">Feel free to comment by <a href="https://github.com/XDcsy/XDcsy.github.io/issues/new">raising an issue <img alt="GitHub-Mark-32px" src="../Images/GitHub-Mark-32px.png" class="github"/></a>.</p>
56+
</body>
57+
</html>

blog.epub

2.11 KB
Binary file not shown.

toc.ncx

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
1-
<?xml version="1.0" encoding="UTF-8"?>
1+
<?xml version="1.0" encoding="utf-8" ?>
22
<!DOCTYPE ncx PUBLIC "-//NISO//DTD ncx 2005-1//EN"
3-
"http://www.daisy.org/z3986/2005/ncx-2005-1.dtd">
4-
5-
<ncx xmlns="http://www.daisy.org/z3986/2005/ncx/" version="2005-1">
3+
"http://www.daisy.org/z3986/2005/ncx-2005-1.dtd"><ncx version="2005-1" xmlns="http://www.daisy.org/z3986/2005/ncx/">
64
<head>
7-
<meta name="dtb:uid" content="urn:uuid:427eacb4-cc28-4e5b-ba4c-ae7e7add9adc"/>
8-
<meta name="dtb:depth" content="1"/>
9-
<meta name="dtb:totalPageCount" content="0"/>
10-
<meta name="dtb:maxPageNumber" content="0"/>
5+
<meta content="urn:uuid:427eacb4-cc28-4e5b-ba4c-ae7e7add9adc" name="dtb:uid"/>
6+
<meta content="1" name="dtb:depth"/>
7+
<meta content="0" name="dtb:totalPageCount"/>
8+
<meta content="0" name="dtb:maxPageNumber"/>
119
</head>
1210
<docTitle>
1311
<text>CSY's Blog</text>
@@ -236,4 +234,4 @@
236234
<content src="Text/Section0037.xhtml"/>
237235
</navPoint>
238236
</navMap>
239-
</ncx>
237+
</ncx>

0 commit comments

Comments
 (0)