最近,我的一个好朋友在使用公共Oracle Maven存储库构建ADF应用程序v.12.2.1.2时经常遇到问题。 他要求我检查它是否对我有用。 好吧……没有。 因此,存储库存在一些问题。 为了使实验整洁并避免对我的工作环境造成任何影响,我决定在docker容器中运行测试。

即使我不能帮助我的朋友(抛出一些依赖异常也无法正常工作),作为此检查的结果,我得到了一个可重用的docker映像,该映像用作ADF应用程序的预配置构建机器(适用于12.2版)。 1.3那时,Oracle Maven存储库运行良好。

这是我所做的:

ubuntu

$: docker run -it --name adfbuilder ubuntu

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

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文件夹。

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二进制文件复制到容器中

maven需要ojdeploy)。

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