最近,我的一个好朋友在使用公共Oracle Maven存储库构建ADF应用程序v.12.2.1.2时经常遇到问题。 他要求我检查它是否对我有用。 好吧……没有。 因此,存储库存在一些问题。 为了使实验整洁并避免对我的工作环境造成任何影响,我决定在docker容器中运行测试。
而且即使我不能帮助我的朋友(抛出一些依赖异常也无法正常工作),作为此检查的结果,我得到了一个可重用的docker映像,该映像用作ADF应用程序的预配置构建机器(适用于12.2版)。 1.3那时,Oracle Maven存储库运行良好。
这是我所做的:
1.拉并运行ubuntu Docker映像
$: docker run -it --name adfbuilder ubuntu
2.在adfbuilder容器中安装Java
apt-get install software-properties-common python-software-properties
add-apt-repository ppa:webupd8team/java
apt-get update
apt-get install oracle-java8-installer
3.在adfbuilder容器中安装Maven
只需下载Maven二进制文件并将其解压缩到某个文件夹中,然后复制到容器中即可:
docker cp ~/Downloads/apache-maven-3.5.2 adfbuilder:/opt/apache-maven-3.5.2
更新容器中的PATH环境变量
export PATH=$PATH:/opt/apache-maven-3.5.2/bin
完成后, mvn应该可用。 在容器中运行它,它将在用户家中创建一个隐藏的.m2文件夹。
4.在adfbuilder容器中配置Maven以与Oracle Maven存储库一起使用
只需放入隐藏的.m2文件夹
docker cp settings.xml adfbuilder:/root/.m2/settings.xml
包含以下内容的settings.xml文件:
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd"><servers><server><id>maven.oracle.com</id><username>eugene.fedorenko@flexagon.com</username><password><MY_PASSWORD></password><configuration><basicAuthScope><host>ANY</host><port>ANY</port><realm>OAM 11g</realm></basicAuthScope><httpConfiguration><all><params><property><name>http.protocol.allow-circular-redirects</name><value>%b,true</value></property></params></all></httpConfiguration></configuration></server></servers><profiles><profile><id>main</id><activation><activeByDefault>true</activeByDefault></activation><repositories><repository><id>maven.oracle.com</id><releases><enabled>true</enabled></releases><snapshots><enabled>false</enabled></snapshots><url>https://maven.oracle.com</url><layout>default</layout></repository></repositories><pluginRepositories><pluginRepository><id>maven.oracle.com</id><url>https://maven.oracle.com</url></pluginRepository></pluginRepositories></profile></profiles>
</settings>
基本上,这足以在容器中编译Maven配置的ADF应用程序。 我们需要确保可以从容器访问我们的应用程序的源代码。 可以通过将源文件夹映射为从容器可见或仅将其复制到容器中来完成。
docker cp / mywork / MySampleApp adfbuilder:/ opt / MySampleApp
完成此操作后,我们可以运行以下命令来编译应用程序:
docker exec adfbuilder mvn -f /opt/MySampleApp/pom.xml编译
5.将JDeveloper二进制文件复制到容器中
由于我们希望超越这一点,不仅能够编译,而且能够生成可部署的工件(耳朵,罐子等),所以我们需要将JDeveloper二进制文件放入容器中(基本上, maven需要ojdeploy)。 我刚刚将Mac_目录中的Oracle_Home文件夹复制到了容器中:
docker cp /My_Oracle_Home adfbuilder:/opt/Oracle_Home
所以,现在我能够建立一个耳朵我的容器应用程序:
docker exec adfbuilder mvn -f /opt/MySampleApp/pom.xml package -DoracleHome=/opt/Oracle_Home
对于第一次运行,它可能会要求您提供JDK的路径
[INFO] Type the full pathname of a JDK installation (or Ctrl-C to quit), the path will be stored in /root/.jdeveloper/12.2.1.3.0/product.conf/usr/lib/jvm/java-8-oracle
6.提交对容器的更改
我们需要做的最后一件事是将更改提交到容器:
docker commit adfbuilder efedorenko/adfbuilder
这将创建一个新的ubuntu映像,其中包含我们应用的所有更改。 我们可以轻松地在基础架构中的任何位置运行该映像,并将其用作ADF应用程序的构建机器。 它的优点在于我们可以在像Docker Cloud(由AWS,Microsoft Azure,Digital Ocean等支持)或Oracle容器云服务等云中运行它,也可以随便使用它。 使用这种方法,云中的服务器可以为您构建应用程序,这通常是一项非常耗资源的工作。
就是这样!
翻译自: https://www.javacodegeeks.com/2018/01/building-oracle-adf-applications-docker.html