这里写图片描述
发起源于Jakata Turbine的项目的Maven, 为项目的标准化构建和发布提供了非常重要的解决方案. Easypack项目中不止期待于软件安装的方便, 更是希望在此基础之上大家能够学习的同时进行新的尝试, 比如CAAS, 因此才引入了很多流行的开源软件的官方改制镜像. 比如Maven提供的功能如何以服务的形式对外提供, 在这篇文章中将会简单提及.

docker pull

[root@liumiaocn ~]# docker pull liumiaocn/maven
Using default tag: latest
latest: Pulling from liumiaocn/maven
b7f33cc0b48e: Already exists
43a564ae36a3: Already exists
b294f0e7874b: Already exists
731ea93f12f2: Pull complete
769fb13c5eca: Pull complete
cc53179bb32f: Pull complete
8f56d5f4a72f: Pull complete
Digest: sha256:62beb4f57770dc5c4716901cf93c0d268f1bc7f83dab675fc9103ebc9e1507c0
Status: Downloaded newer image for liumiaocn/maven:latest
[root@liumiaocn ~]#

确认

[root@liumiaocn ~]# docker run -it --rm --name maven liumiaocn/maven mvn --version
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T16:41:47+00:00)
Maven home: /usr/share/maven
Java version: 1.8.0_111-internal, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-1.8-openjdk/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-327.el7.x86_64", arch: "amd64", family: "unix"
[root@liumiaocn ~]#

使用场景

Maven提供的打包等服务,而我们只有代码,使用Maven所提供的服务进行打包,这是最简单的服务提供方式之一。我们使用在其他文章使用的spring cloud的Eureka提供的服务注册的模块进行编译,当然你也可以自己其他的pom项目。

事前确认

[root@liumiaocn discoveryservice]# ll
total 40
-rw-r--r--. 1 root root 16573 Dec 28 07:30 discoveryservice.iml
-rw-r--r--. 1 root root  7058 Dec 28 07:27 mvnw
-rw-r--r--. 1 root root  5006 Dec 28 07:27 mvnw.cmd
-rw-r--r--. 1 root root  2216 Dec 28 07:27 pom.xml
drwxr-xr-x. 4 root root    28 Dec 28 07:27 src
[root@liumiaocn discoveryservice]#

执行

[root@liumiaocn discoveryservice]# docker run -it --rm --name maven -v "$(pwd)":/usr/src/mymaven -w /usr/src/mymaven liumiaocn/maven mvn package
[INFO] Scanning for projects...
Downloading: https://repo.spring.io/snapshot/org/springframework/boot/spring-boot-starter-parent/1.4.3.RELEASE/spring-boot-starter-parent-1.4.3.RELEASE.pom
Downloading: https://repo.spring.io/milestone/org/springframework/boot/spring-boot-starter-parent/1.4.3.RELEASE/spring-boot-starter-parent-1.4.3.RELEASE.pom
......
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building discoveryservice 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
Downloading: https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-maven-plugin/1.4.3.RELEASE/spring-boot-maven-plugin-1.4.3.RELEASE.pom
......
Downloaded: https://repo.maven.apache.org/maven2/org/sonatype/sisu/sisu-guice/2.1.7/sisu-guice-2.1.7-noaop.jar (461 KB at 9.3 KB/sec)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 42:10 min
[INFO] Finished at: 2017-03-10T15:01:33+00:00
[INFO] Final Memory: 34M/95M
[INFO] ------------------------------------------------------------------------

中间确认

在mvn package的工程中,确认启动的container的结果

[root@liumiaocn discoveryservice]# docker exec -it maven /bin/sh
/usr/src/mymaven # ls -l
total 40
-rw-r--r--    1 root     root         16573 Dec 28 12:30 discoveryservice.iml
-rw-r--r--    1 root     root          7058 Dec 28 12:27 mvnw
-rw-r--r--    1 root     root          5006 Dec 28 12:27 mvnw.cmd
-rw-r--r--    1 root     root          2216 Dec 28 12:27 pom.xml
drwxr-xr-x    4 root     root            28 Dec 28 12:27 src
drwxr-xr-x    3 root     root            20 Mar 10 14:44 target
/usr/src/mymaven # pwd
/usr/src/mymaven
/usr/src/mymaven #

确认mvn管理的本地repository内容

/usr/src/mymaven # cd
~ # pwd
/root
~ # cd .m2
~/.m2 # ls
copy_reference_file.log  repository               settings-docker.xml
~/.m2 # cd repository
~/.m2/repository # ls -lart
total 12
drwxr-xr-x    3 root     root            79 Mar 10 14:19 ..
drwxr-xr-x    3 root     root            16 Mar 10 14:23 ch
drwxr-xr-x    3 root     root            21 Mar 10 14:26 stax
drwxr-xr-x    3 root     root            27 Mar 10 14:26 commons-jxpath
drwxr-xr-x    3 root     root            22 Mar 10 14:26 joda-time
drwxr-xr-x    3 root     root            18 Mar 10 14:27 antlr
drwxr-xr-x    3 root     root            34 Mar 10 14:27 commons-configuration
drwxr-xr-x    3 root     root            25 Mar 10 14:28 commons-lang
drwxr-xr-x    3 root     root            20 Mar 10 14:28 xmlpull
drwxr-xr-x    3 root     root            21 Mar 10 14:28 xpp3
drwxr-xr-x    3 root     root            26 Mar 10 14:29 commons-codec
drwxr-xr-x    3 root     root            24 Mar 10 14:30 aopalliance
drwxr-xr-x    6 root     root            55 Mar 10 14:30 javax
drwxr-xr-x    4 root     root            34 Mar 10 14:31 io
drwxr-xr-x    3 root     root            28 Mar 10 14:33 commons-logging
drwxr-xr-x    3 root     root            32 Mar 10 14:33 commons-collections
drwxr-xr-x    9 root     root          4096 Mar 10 14:33 com
drwxr-xr-x    4 root     root            31 Mar 10 14:33 net
drwxr-xr-x    3 root     root            18 Mar 10 14:33 junit
drwxr-xr-x   21 root     root          4096 Mar 10 14:34 org
drwxr-xr-x    3 root     root            24 Mar 10 14:42 classworlds
drwxr-xr-x    3 root     root            24 Mar 10 14:42 commons-cli
drwxr-xr-x   23 root     root          4096 Mar 10 14:42 .
~/.m2/repository #

结果确认

可以看到,虽然没有安装Maven,输入了source,输出的是编译打包之后的结果。

[root@liumiaocn discoveryservice]# pwd
/root/discoveryservice
[root@liumiaocn discoveryservice]# ll
total 44
-rw-r--r--. 1 root root 16573 Dec 28 07:30 discoveryservice.iml
-rw-r--r--. 1 root root  7058 Dec 28 07:27 mvnw
-rw-r--r--. 1 root root  5006 Dec 28 07:27 mvnw.cmd
-rw-r--r--. 1 root root  2216 Dec 28 07:27 pom.xml
drwxr-xr-x. 4 root root    28 Dec 28 07:27 src
drwxr-xr-x. 9 root root  4096 Mar 10 10:01 target
[root@liumiaocn discoveryservice]# ll target
total 39044
drwxr-xr-x. 3 root root       45 Mar 10 09:49 classes
-rw-r--r--. 1 root root 39971767 Mar 10 10:01 discoveryservice-0.0.1-SNAPSHOT.jar
-rw-r--r--. 1 root root     3685 Mar 10 09:58 discoveryservice-0.0.1-SNAPSHOT.jar.original
drwxr-xr-x. 3 root root       24 Mar 10 09:49 generated-sources
drwxr-xr-x. 3 root root       29 Mar 10 09:49 generated-test-sources
drwxr-xr-x. 2 root root       27 Mar 10 09:58 maven-archiver
drwxr-xr-x. 3 root root       34 Mar 10 09:49 maven-status
drwxr-xr-x. 2 root root     4096 Mar 10 09:53 surefire-reports
drwxr-xr-x. 3 root root       16 Mar 10 09:49 test-classes
[root@liumiaocn discoveryservice]#

总结

使用Maven的容器提供打包服务,但是repository还是与容器进行关联,结合nexus的服务和本地存储管理会有更好的效果。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐