準備環境
直接拉取使用現成的映象吧:
docker pull virhuiai/maven_quick:version-aliyun
執行容器
進入一個目錄:
cd /Volumes/RamDisk
執行maven並將當前目錄對映到容器的工作目錄,後面從容器裡複製檔案到宿主就可以不用docker cp命令了:
docker run -it --rm --name maven_quick_tmp_run \-v "$HOME/.m2/repository":/root/.m2/repository \-v "$PWD":/usr/src/mymaven \-w /usr/src/mymaven \virhuiai/maven_quick:version-aliyun \/bin/sh
現在找下安裝目錄,知道maven有個settings.xml檔案,就透過它來找到目錄吧:
cd /usr/share/maven/
下面看一下該目錄的結構和內容。
maven安裝目錄的結構和內容# ls -altotal 60drwxr-xr-x 1 root root 4096 Jan 13 07:04 .drwxr-xr-x 1 root root 4096 Feb 1 06:55 ..-rw-r--r-- 1 root root 17504 Nov 7 2019 LICENSE-rw-r--r-- 1 root root 5141 Nov 7 2019 NOTICE-rw-r--r-- 1 root root 2612 Nov 7 2019 README.txtdrwxr-xr-x 2 root root 4096 Jan 13 07:04 bindrwxr-xr-x 2 root root 4096 Jan 13 07:04 bootdrwxr-xr-x 1 root root 4096 Feb 1 06:55 confdrwxr-xr-x 4 root root 4096 Jan 13 07:04 libdrwxr-xr-x 1 root root 4096 Jan 13 07:04 ref
有四個目錄
drwxr-xr-x 2 root root 4096 Jan 13 07:04 bindrwxr-xr-x 2 root root 4096 Jan 13 07:04 bootdrwxr-xr-x 1 root root 4096 Feb 1 06:55 confdrwxr-xr-x 4 root root 4096 Jan 13 07:04 libdrwxr-xr-x 1 root root 4096 Jan 13 07:04 ref
bin目錄# tree -N ./bin./bin├── m2.conf├── mvn├── mvn.cmd├── mvnDebug├── mvnDebug.cmd└── mvnyjp
該目錄包含了mvn執行的指令碼,帶cmd的是基於Windows平臺的bat指令碼,不帶的是基於UNIX平臺的Shell指令碼。這些指令碼用來配置Java命令,準備classpath和相關的Java系統屬性,然後執行Java命令。帶Debug的檔案,只是多了條MAVEN_DEBUG_OPTS配置:
# cat mvnDebug
其作用就是在執行Maven時開啟debug,以便除錯Maven本身。
m2.conf是classworlds的配置檔案:
boot目錄# tree -N bootboot├── plexus-classworlds-2.6.0.jar└── plexus-classworlds.license0 directories, 2 files
plexus-classworlds是一個類載入器框架,相對於預設的java類載入器,它提供了更豐富的語法以方便配置,Maven使用該框架載入自己的類庫。
lib目錄lib目錄包含了所有Maven執行時需要的Java類庫。其中,maven-model-builder-3.6.3.jar中有超級POM, 我們可以解壓出來看看:
cp /usr/share/maven/lib/maven-model-builder-3.6.3.jar /usr/src/mymaven
在宿主機解壓後,可以在maven-model-builder-3.6.3/org/apache/maven/model目錄中找到pom.xml,即超級POM。
最新評論