Easypack之Alpine容器系列:Maven
发起源于Jakata Turbine的项目的Maven, 为项目的标准化构建和发布提供了非常重要的解决方案. easypack项目中不止期待于软件安装的方便, 更是希望在此基础之上大家能够学习的同时进行新的尝试. 比如CAAS, 因此才引入了很多流行的开源软件的官方改制镜像. 比如Maven提供的功能如何以服务的形式对外提供, 在这篇文章中将会简单提及.
文章共3,075字 · 阅读需要大约11分钟
一键AI生成摘要,助你高效阅读
问答
·
发起源于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的服务和本地存储管理会有更好的效果。
更多推荐
已为社区贡献17条内容
所有评论(0)