Showing posts with label Maven. Show all posts
Showing posts with label Maven. Show all posts

Saturday, October 25, 2025

Building Jakarta EE Projects for WebLogic Server 14.1.2 with Maven

 HOWTO

 Oracle  

 

Blog

Github

 

Install Oracle Weblogic JARs to local Maven repo using 

Oracle Maven Synchronization Plug-In

 

dave@dave:/git/weblogic/dave-basic-project-14.1.2$ ls /app/weblogic/oracle_common/plugins/maven/com/oracle/maven/oracle-maven-sync/14.1.2/oracle-maven-sync-14.1.2.pom
/app/weblogic/oracle_common/plugins/maven/com/oracle/maven/oracle-maven-sync/14.1.2/oracle-maven-sync-14.1.2.pom
dave@dave:/git/weblogic/dave-basic-project-14.1.2$ cd /app/weblogic/oracle_common/plugins/maven/com/oracle/maven/oracle-maven-sync/14.1.2/
dave@dave:/app/weblogic/oracle_common/plugins/maven/com/oracle/maven/oracle-maven-sync/14.1.2$ mvn install:install-file -DpomFile=oracle-maven-sync-14.1.2.pom -Dfile=oracle-maven-sync-14.1.2.jar
[INFO] Scanning for projects...
[INFO] 
[INFO] ------------------< org.apache.maven:standalone-pom >-------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] --------------------------------[ pom ]---------------------------------
[INFO] 
[INFO] --- install:3.1.1:install-file (default-cli) @ standalone-pom ---
Downloading from central: https://repo.maven.apache.org/maven2/org/eclipse/aether/aether-api/1.0.0.v20140518/aether-api-1.0.0.v20140518.jar
Downloaded from central: https://repo.maven.apache.org/maven2/org/eclipse/aether/aether-api/1.0.0.v20140518/aether-api-1.0.0.v20140518.jar (136 kB at 324 kB/s)
[INFO] Installing /home/app/weblogic/oracle_common/plugins/maven/com/oracle/maven/oracle-maven-sync/14.1.2/oracle-maven-sync-14.1.2.jar to /home/dave/.m2/repository/com/oracle/maven/oracle-maven-sync/14.1.2-0-0/oracle-maven-sync-14.1.2-0-0.jar
[INFO] Installing /home/app/weblogic/oracle_common/plugins/maven/com/oracle/maven/oracle-maven-sync/14.1.2/oracle-maven-sync-14.1.2.pom to /home/dave/.m2/repository/com/oracle/maven/oracle-maven-sync/14.1.2-0-0/oracle-maven-sync-14.1.2-0-0.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  0.933 s
[INFO] Finished at: 2025-10-25T23:34:30+02:00
[INFO] ------------------------------------------------------------------------
dave@dave:/app/weblogic/oracle_common/plugins/maven/com/oracle/maven/oracle-maven-sync/14.1.2$ mvn help:describe -Dplugin=com.oracle.maven:oracle-maven-sync -Ddetail
[INFO] Scanning for projects...
[INFO] 
[INFO] ------------------< org.apache.maven:standalone-pom >-------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] --------------------------------[ pom ]---------------------------------
[INFO] 
[INFO] --- help:3.2.0:describe (default-cli) @ standalone-pom ---
Downloading from central: https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-provider-api/1.0-beta-2/wagon-provider-api-1.0-beta-2.pom
Downloaded from central: https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-provider-api/1.0-beta-2/wagon-provider-api-1.0-beta-2.pom (680 B at 2.1 kB/s)
Downloading from central: https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon/1.0-beta-2/wagon-1.0-beta-2.pom
Downloaded from central: https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon/1.0-beta-2/wagon-1.0-beta-2.pom (5.9 kB at 155 kB/s)
Downloading from central: https://repo.maven.apache.org/maven2/junit/junit/4.10/junit-4.10.pom
Downloaded from central: https://repo.maven.apache.org/maven2/junit/junit/4.10/junit-4.10.pom (2.3 kB at 52 kB/s)
Downloading from central: https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.pom
Downloaded from central: https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.pom (481 B at 11 kB/s)
Downloading from central: https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-parent/1.1/hamcrest-parent-1.1.pom
Downloaded from central: https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-parent/1.1/hamcrest-parent-1.1.pom (5.9 kB at 103 kB/s)
Downloading from central: https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-http-lightweight/1.0-beta-6/wagon-http-lightweight-1.0-beta-6.pom
Downloaded from central: https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-http-lightweight/1.0-beta-6/wagon-http-lightweight-1.0-beta-6.pom (1.8 kB at 44 kB/s)
Downloading from central: https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-http-shared/1.0-beta-6/wagon-http-shared-1.0-beta-6.pom
Downloaded from central: https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-http-shared/1.0-beta-6/wagon-http-shared-1.0-beta-6.pom (2.1 kB at 55 kB/s)
Downloading from central: https://repo.maven.apache.org/maven2/nekohtml/xercesMinimal/1.9.6.2/xercesMinimal-1.9.6.2.pom
Downloaded from central: https://repo.maven.apache.org/maven2/nekohtml/xercesMinimal/1.9.6.2/xercesMinimal-1.9.6.2.pom (390 B at 11 kB/s)
Downloading from central: https://repo.maven.apache.org/maven2/nekohtml/nekohtml/1.9.6.2/nekohtml-1.9.6.2.pom
Downloaded from central: https://repo.maven.apache.org/maven2/nekohtml/nekohtml/1.9.6.2/nekohtml-1.9.6.2.pom (704 B at 18 kB/s)
Downloading from central: https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-http/1.0-beta-6/wagon-http-1.0-beta-6.pom
Downloaded from central: https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-http/1.0-beta-6/wagon-http-1.0-beta-6.pom (3.3 kB at 76 kB/s)
Downloading from central: https://repo.maven.apache.org/maven2/commons-httpclient/commons-httpclient/3.1/commons-httpclient-3.1.pom
Downloaded from central: https://repo.maven.apache.org/maven2/commons-httpclient/commons-httpclient/3.1/commons-httpclient-3.1.pom (7.8 kB at 194 kB/s)
Downloading from central: https://repo.maven.apache.org/maven2/commons-codec/commons-codec/1.2/commons-codec-1.2.pom
Downloaded from central: https://repo.maven.apache.org/maven2/commons-codec/commons-codec/1.2/commons-codec-1.2.pom (3.8 kB at 93 kB/s)
Downloading from central: https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-webdav-jackrabbit/1.0-beta-6/wagon-webdav-jackrabbit-1.0-beta-6.pom
Downloaded from central: https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-webdav-jackrabbit/1.0-beta-6/wagon-webdav-jackrabbit-1.0-beta-6.pom (3.5 kB at 92 kB/s)
Downloading from central: https://repo.maven.apache.org/maven2/org/apache/jackrabbit/jackrabbit-webdav/1.5.0/jackrabbit-webdav-1.5.0.pom
Downloaded from central: https://repo.maven.apache.org/maven2/org/apache/jackrabbit/jackrabbit-webdav/1.5.0/jackrabbit-webdav-1.5.0.pom (3.3 kB at 93 kB/s)
Downloading from central: https://repo.maven.apache.org/maven2/org/apache/jackrabbit/jackrabbit-parent/1.5.0/jackrabbit-parent-1.5.0.pom
Downloaded from central: https://repo.maven.apache.org/maven2/org/apache/jackrabbit/jackrabbit-parent/1.5.0/jackrabbit-parent-1.5.0.pom (25 kB at 516 kB/s)
Downloading from central: https://repo.maven.apache.org/maven2/org/apache/jackrabbit/jackrabbit-jcr-commons/1.5.0/jackrabbit-jcr-commons-1.5.0.pom
Downloaded from central: https://repo.maven.apache.org/maven2/org/apache/jackrabbit/jackrabbit-jcr-commons/1.5.0/jackrabbit-jcr-commons-1.5.0.pom (3.0 kB at 90 kB/s)
Downloading from central: https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.5.3/slf4j-api-1.5.3.pom
Downloaded from central: https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.5.3/slf4j-api-1.5.3.pom (3.0 kB at 85 kB/s)
Downloading from central: https://repo.maven.apache.org/maven2/org/slf4j/slf4j-parent/1.5.3/slf4j-parent-1.5.3.pom
Downloaded from central: https://repo.maven.apache.org/maven2/org/slf4j/slf4j-parent/1.5.3/slf4j-parent-1.5.3.pom (7.7 kB at 204 kB/s)
Downloading from central: https://repo.maven.apache.org/maven2/commons-httpclient/commons-httpclient/3.0/commons-httpclient-3.0.pom
Downloaded from central: https://repo.maven.apache.org/maven2/commons-httpclient/commons-httpclient/3.0/commons-httpclient-3.0.pom (8.0 kB at 182 kB/s)
Downloading from central: https://repo.maven.apache.org/maven2/org/slf4j/slf4j-nop/1.5.3/slf4j-nop-1.5.3.pom
Downloaded from central: https://repo.maven.apache.org/maven2/org/slf4j/slf4j-nop/1.5.3/slf4j-nop-1.5.3.pom (1.5 kB at 40 kB/s)
Downloading from central: https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-ssh-external/1.0-beta-6/wagon-ssh-external-1.0-beta-6.pom
Downloaded from central: https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-ssh-external/1.0-beta-6/wagon-ssh-external-1.0-beta-6.pom (2.6 kB at 66 kB/s)
Downloading from central: https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-ssh-common/1.0-beta-6/wagon-ssh-common-1.0-beta-6.pom
Downloaded from central: https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-ssh-common/1.0-beta-6/wagon-ssh-common-1.0-beta-6.pom (1.8 kB at 49 kB/s)
Downloading from central: https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-ssh/1.0-beta-6/wagon-ssh-1.0-beta-6.pom
Downloaded from central: https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-ssh/1.0-beta-6/wagon-ssh-1.0-beta-6.pom (2.9 kB at 72 kB/s)
Downloading from central: https://repo.maven.apache.org/maven2/com/jcraft/jsch/0.1.38/jsch-0.1.38.pom
Downloaded from central: https://repo.maven.apache.org/maven2/com/jcraft/jsch/0.1.38/jsch-0.1.38.pom (967 B at 28 kB/s)
Downloading from central: https://repo.maven.apache.org/maven2/junit/junit/4.10/junit-4.10.jar
Downloaded from central: https://repo.maven.apache.org/maven2/junit/junit/4.10/junit-4.10.jar (253 kB at 2.8 MB/s)
Downloading from central: https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar
Downloaded from central: https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar (77 kB at 1.1 MB/s)
[INFO] com.oracle.maven:oracle-maven-sync:14.1.2-0-0

Name: Oracle Maven Synchronization Plugin
Description: Maven plugin to load a Maven repository with the contents of the
  Oracle Home directory
Group Id: com.oracle.maven
Artifact Id: oracle-maven-sync
Version: 14.1.2-0-0
Goal Prefix: oracle-sync

This plugin has 2 goals:

oracle-sync:help
  Description: Display help.
  Implementation: com.oracle.maven.sync.ODMHelp
  Language: java

  This mojo doesn't use any parameters.

oracle-sync:push
  Description: Install to the local repository and optionally deploy to a
    remote repository from the specified oracle home
    The plugin will use your current Maven settings to determine the path to
    the local repository and, optionally, a remote deployment repository. For
    details on how to configure Maven's repository settings, see the Maven
    settings reference: http://maven.apache.org/settings.html
    
    You can specify the parameters on the command line like this:
    -DserverId=archiva-internal -DdryRun=false -DfailOnError=false
    
    To override the localRepository target used by the plugin, you can specify
    the following option on the command-line:
    -Dmaven.local.repo=/alternate/path/to/repository
    
    To supply an alternate settings.xml for purposes of this operation, use the
    --settings option. For example:
    
     mvn --settings /alternate/path/settings.xml ...
    
    ...or in your POM like this:
    
     <plugin>
     <groupId>com.oracle.maven</groupId>
     <artifactId>oracle-maven-sync</artifactId>
     <version>14.1.2-0-0</version>
     <configuration>
     <oracleHome>/home/mark/Oracle/Middleware</oracleHome>
     <failOnError>false</failOnError>
     </configuration>
     </plugin>
  Implementation: com.oracle.maven.sync.ODMPushMojo
  Language: java

  Available parameters:

    dryRun (Default: false)
      User property: dryRun
      If set to 'true' this goal execution will only log push actions but will
      not actually make any changes.

    failOnError (Default: true)
      User property: failOnError
      If set to 'true' the plugin will stop and return an error immediately
      upon the first failure to deploy an artifact. Otherwise, the plugin will
      log the error and attempt to complete deployment of all other artifacts.

    oracleHome
      Required: true
      User property: oracleHome
      Path to the Oracle home.

    overwriteParent (Default: false)
      User property: overwriteParent
      If true, the plugin will overwrite POM artifacts with ancestry to
      oracle-common if they exist in the target repository. The default value
      of false will prevent automatic overwrite of customized POM contents. If
      any such POMs are encountered during plugin execution, an error will be
      thrown and handled according to the failOnError flag value. To carry over
      changes, save the existing POMs, run the push goal with
      overwriteParent=true and manually transfer the changes to the newly
      pushed POMs.

    pushDuplicates (Default: false)
      User property: pushDuplicates
      Push all duplicate locations. If multiple POMs with different Maven
      coordinates (GAV) are assigned to the same location path, the plugin will
      push them all to the destination repository if this flag is true.
      If the value is false, the push operation will fail. Set failOneError to
      false if you would like to skip all duplicates except the GAV in the set
      of duplicates that is encountered first.

    retryFailedDeploymentCount (Default: 1)
      User property: retryFailedDeploymentCount
      Parameter used to control how many times a failed deployment will be
      retried before giving up and failing. If a value outside the range 0-10
      is specified it will be pulled to the nearest value within the range
      0-10. If set to 0, there will be no retries
      
      If the artifact being deployed to the remote server has both a POM and a
      binary file, the retry count will be reset between deploying the POM and
      deploying the binary file.
      
      This parameter is ignored when pushing to a local repository.

    serverId
      User property: serverId
      This is the ID of the repository in your pom.xml or settings.xml file -
      where you have specified the remote Maven repository and its
      authentication information. The plugin will only install to the local
      repository if this parameter is not set.


[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  3.459 s
[INFO] Finished at: 2025-10-25T23:35:41+02:00
[INFO] ------------------------------------------------------------------------
dave@dave:/app/weblogic/oracle_common/plugins/maven/com/oracle/maven/oracle-maven-sync/14.1.2$ mvn com.oracle.maven:oracle-maven-sync:push -DoracleHome=/app/weblogic
[INFO] Scanning for projects...
[INFO] 
[INFO] ------------------< org.apache.maven:standalone-pom >-------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] --------------------------------[ pom ]---------------------------------
[INFO] 
[INFO] --- oracle-sync:14.1.2-0-0:push (default-cli) @ standalone-pom ---
[INFO] ------------------------------------------------------------------------
[INFO] ORACLE MAVEN SYNCHRONIZATION PLUGIN - PUSH
[INFO] ------------------------------------------------------------------------

 

Generate project from archetype

  See generated code here  https://github.com/dveselka/weblogic/tree/master/dave-basic-project-14.1.2/dave-basic-webapp-ejb-project

dave@dave:/git/weblogic/dave-basic-project-14.1.2$ mvn archetype:generate     -DarchetypeGroupId=com.oracle.weblogic.archetype     -DarchetypeArtifactId=basic-webapp-ejb     -DarchetypeVersion=14.1.2-0-0     -DgroupId=dave     -DartifactId=dave-basic-webapp-ejb-project     -Dversion=1.0-SNAPSHOT
[INFO] Scanning for projects...
[INFO] 
[INFO] ------------------< org.apache.maven:standalone-pom >-------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] --------------------------------[ pom ]---------------------------------
[INFO] 
[INFO] >>> archetype:3.2.1:generate (default-cli) > generate-sources @ standalone-pom >>>
[INFO] 
[INFO] <<< archetype:3.2.1:generate (default-cli) < generate-sources @ standalone-pom <<<
[INFO] 
[INFO] 
[INFO] --- archetype:3.2.1:generate (default-cli) @ standalone-pom ---
[INFO] Generating project in Interactive mode
[WARNING] Archetype not found in any catalog. Falling back to central repository.
[WARNING] Add a repository with id 'archetype' in your settings.xml if archetype's repository is elsewhere.
[INFO] Using property: groupId = dave
[INFO] Using property: artifactId = dave-basic-webapp-ejb-project
[INFO] Using property: version = 1.0-SNAPSHOT
[INFO] Using property: package = dave
Confirm properties configuration:
groupId: dave
artifactId: dave-basic-webapp-ejb-project
version: 1.0-SNAPSHOT
package: dave
 Y: : Y
[INFO] ----------------------------------------------------------------------------
[INFO] Using following parameters for creating project from Archetype: basic-webapp-ejb:14.1.2-0-0
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: groupId, Value: dave
[INFO] Parameter: artifactId, Value: dave-basic-webapp-ejb-project
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Parameter: package, Value: dave
[INFO] Parameter: packageInPathFormat, Value: dave
[INFO] Parameter: package, Value: dave
[INFO] Parameter: groupId, Value: dave
[INFO] Parameter: artifactId, Value: dave-basic-webapp-ejb-project
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Project created from Archetype in dir: /git/weblogic/dave-basic-project-14.1.2/dave-basic-webapp-ejb-project
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  6.297 s
[INFO] Finished at: 2025-10-25T23:39:54+02:00
[INFO] ------------------------------------------------------------------------
dave@dave:/git/weblogic/dave-basic-project-14.1.2$ find dave-basic-webapp-ejb-project/
dave-basic-webapp-ejb-project/
dave-basic-webapp-ejb-project/pom.xml
dave-basic-webapp-ejb-project/src
dave-basic-webapp-ejb-project/src/main
dave-basic-webapp-ejb-project/src/main/java
dave-basic-webapp-ejb-project/src/main/java/dave
dave-basic-webapp-ejb-project/src/main/java/dave/entity
dave-basic-webapp-ejb-project/src/main/java/dave/entity/Account.java
dave-basic-webapp-ejb-project/src/main/java/dave/service
dave-basic-webapp-ejb-project/src/main/java/dave/service/AccountManagerImpl.java
dave-basic-webapp-ejb-project/src/main/java/dave/service/AccountBean.java
dave-basic-webapp-ejb-project/src/main/java/dave/service/AccountManager.java
dave-basic-webapp-ejb-project/src/main/java/dave/interceptor
dave-basic-webapp-ejb-project/src/main/java/dave/interceptor/LogInterceptor.java
dave-basic-webapp-ejb-project/src/main/java/dave/interceptor/OnDeposit.java
dave-basic-webapp-ejb-project/src/main/webapp
dave-basic-webapp-ejb-project/src/main/webapp/css
dave-basic-webapp-ejb-project/src/main/webapp/css/bootstrap.css
dave-basic-webapp-ejb-project/src/main/webapp/index.xhtml
dave-basic-webapp-ejb-project/src/main/webapp/WEB-INF
dave-basic-webapp-ejb-project/src/main/webapp/WEB-INF/web.xml
dave-basic-webapp-ejb-project/src/main/webapp/WEB-INF/beans.xml
dave-basic-webapp-ejb-project/src/main/webapp/template.xhtml
dave-basic-webapp-ejb-project/src/main/resources
dave-basic-webapp-ejb-project/src/main/resources/META-INF
dave-basic-webapp-ejb-project/src/main/resources/META-INF/persistence.xml
dave-basic-webapp-ejb-project/src/main/scripts

 

Fix Maven plugin dependency 

<plugin>
        <groupid>com.oracle.weblogic</groupid> 
        <artifactid>weblogic-maven-plugin</artifactid> 
        <version>14.1.2-0-0</version> 
        <!--You can find and redefine the following variables in the parent pom file arccording to your environment.
  
        oracleMiddlewareHome
        oracleServerUrl
        oracleUsername
        oraclePassword
        oracleServerName-->
        <configuration> 
          <middlewarehome>${oracleMiddlewareHome}</middlewarehome>
        </configuration>
        <dependencies>
           <dependency>
            <groupid>com.oracle.weblogic</groupid>
            <artifactid>weblogic</artifactid>
            <version>14.1.2-0-0</version>
            <scope>system</scope>
            <systempath>/app/weblogic/wlserver/server/lib/weblogic.jar</systempath>
         </dependency>
        </dependencies> 

 

Deploy project

dave@dave:/git/weblogic/dave-basic-project-14.1.2/dave-basic-webapp-ejb-project$ mvn -e  pre-integration-test
[INFO] Error stacktraces are turned on.
[INFO] Scanning for projects...
[INFO] 
[INFO] -----------------< dave:dave-basic-webapp-ejb-project >-----------------
[INFO] Building basicWebappEjb 1.0-SNAPSHOT
[INFO]   from pom.xml
[INFO] --------------------------------[ war ]---------------------------------
[INFO] 
[INFO] --- resources:3.3.1:resources (default-resources) @ dave-basic-webapp-ejb-project ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 1 resource from src/main/resources to target/classes
[INFO] 
[INFO] --- compiler:2.3.2:compile (default-compile) @ dave-basic-webapp-ejb-project ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- resources:3.3.1:testResources (default-testResources) @ dave-basic-webapp-ejb-project ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory /git/weblogic/dave-basic-project-14.1.2/dave-basic-webapp-ejb-project/src/test/resources
[INFO] 
[INFO] --- compiler:2.3.2:testCompile (default-testCompile) @ dave-basic-webapp-ejb-project ---
[INFO] No sources to compile
[INFO] 
[INFO] --- surefire:3.2.2:test (default-test) @ dave-basic-webapp-ejb-project ---
[INFO] 
[INFO] --- war:3.3.1:war (default-war) @ dave-basic-webapp-ejb-project ---
[INFO] Packaging webapp
[INFO] Assembling webapp [dave-basic-webapp-ejb-project] in [/git/weblogic/dave-basic-project-14.1.2/dave-basic-webapp-ejb-project/target/basicWebappEjb]
[INFO] Processing war project
[INFO] Copying webapp resources [/git/weblogic/dave-basic-project-14.1.2/dave-basic-webapp-ejb-project/src/main/webapp]
[INFO] Building war: /git/weblogic/dave-basic-project-14.1.2/dave-basic-webapp-ejb-project/target/basicWebappEjb.war
[INFO] 
[INFO] --- weblogic:14.1.2-0-0:deploy (default) @ dave-basic-webapp-ejb-project ---
[WARNING]  Parameter 'middlewareHome' (user property 'middlewareHome') is deprecated: This Mojo no longer requires a local server install.
[INFO] Command flags are: -noexit -deploy -username weblogic -password ******* -name basicWebappEjb -source /git/weblogic/dave-basic-project-14.1.2/dave-basic-webapp-ejb-project/target/basicWebappEjb.war -verbose -adminurl t3://localhost:7001
weblogic.Deployer invoked with options:  -noexit -deploy -username weblogic -name basicWebappEjb -source /git/weblogic/dave-basic-project-14.1.2/dave-basic-webapp-ejb-project/target/basicWebappEjb.war -verbose -adminurl t3://localhost:7001
<Nov 5, 2025, 9:21:03 PM Central European Standard Time> <Info> <J2EE Deployment SPI> <BEA-260121> <Initiating deploy operation for application, basicWebappEjb [archive: /git/weblogic/dave-basic-project-14.1.2/dave-basic-webapp-ejb-project/target/basicWebappEjb.war], to configured targets.> 
Task 0 initiated: [Deployer:149026]deploy application basicWebappEjb on AdminServer.
Task 0 completed: [Deployer:149026]deploy application basicWebappEjb on AdminServer.
Target state: deploy completed on Server AdminServer

Target Assignments:
+ basicWebappEjb  AdminServer
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  8.488 s
[INFO] Finished at: 2025-11-05T21:21:07+01:00
[INFO] ------------------------------------------------------------------------

Check application in Weblogic remote console 

 

 

 

Wednesday, June 21, 2023

Alternative artifact creation in Maven using Ant

 HOWTO

Set target artifact, skip standard generation 

   <plugin>
      <groupId>org.codehaus.gmaven</groupId>
      <artifactId>gmaven-plugin</artifactId>
      <version>1.4</version>
      <executions>
        <execution>
          <id>set-main-artifact</id>
          <phase>package</phase>
          <goals>
            <goal>execute</goal>
          </goals>
          <configuration>
            <source>
              project.artifact.setFile(new File(project.build.directory+'/'+project.artifactId+'-'+project.version+'.war'))
            </source>
          </configuration>
        </execution>
      </executions>
    </plugin>
Skip compilation
<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-compiler-plugin</artifactId>
   <executions>
     <execution>
       <id>default-compile</id>
       <phase>compile</phase>
       <goals>
          <goal>compile</goal>
       </goals>
       <configuration>
         <skipMain>true</skipMain> <--Skip
       </configuration>
     </execution>
   </executions>
</plugin>
Skip WAR generation

Wednesday, December 7, 2022

Maven assembly plugin

 HOWTO

Project input 

  • Java sources
  • resources files
  • 3rd party libraries for compilation only

Project output 

  • packaged JARs
  • packaged EARs
  • packaged WARs
  • config files
  • 3rd party libraries required for runtime
  • complete TAR file delivering the application

Artifact types

JAR

  • Java classes
  • descriptors

EAR

  • JARs - dependencies
  • descriptors

WAR 

  • JARs - dependencies 
  • Web code
  •  descriptors

 

 Test project

Sample assembly descriptor

<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd">

    <id>package-artifacts</id>
    <!-- Final distributive format. -->
    <formats>
        <format>tar</format>
    </formats>

    <!-- Exclude current module from distributive. -->
    <includeBaseDirectory>false</includeBaseDirectory>

    <!-- Project files to include to distributive.
    ${maven.multiModuleProjectDirectory} - path to root project folder. -->
    <fileSets>
        <fileSet>
            <!-- From directory. -->
        <directory>${maven.multiModuleProjectDirectory}/add-to-distribution/docs</directory>
            <!-- Directory in distributive. -->
            <outputDirectory>docs</outputDirectory>
            <includes>
                <!-- ** - include all files of any nesting. -->
                <include>**</include>
            </includes>
        </fileSet>
    </fileSets>

    <!-- Set of modules, included in distributive. -->
    <dependencySets>
        <dependencySet>
            <includes>
                <!-- Include all modules from POM-dependencies current module. -->
                <include>*</include>
            </includes>
            <!-- Target folder for modules in distributive. -->
            <outputDirectory>modules</outputDirectory>
            <useProjectArtifact>true</useProjectArtifact>
            <useTransitiveDependencies>false</useTransitiveDependencies>
        </dependencySet>
    </dependencySets>

</assembly>

Run mvn install

INFO] -------------------------< dave:dist-assembly >-------------------------
[INFO] Building dist-assembly 1.0.0-SNAPSHOT                              [3/3]
[INFO] --------------------------------[ pom ]---------------------------------
[INFO] 
[INFO] --- maven-assembly-plugin:2.2-beta-5:single (create-dist) @ dist-assembly ---
[INFO] Reading assembly descriptor: dist-assembly.xml
[WARNING] Cannot include project artifact: dave:dist-assembly:pom:1.0.0-SNAPSHOT; it doesn't have an associated file or directory.
[WARNING] The following patterns were never triggered in this artifact inclusion filter:
o  '*'

[INFO] Building tar : /git/java-tutorial/assembly/target/dist-assembly-1.0.0-SNAPSHOT-package-artifacts.tar
[INFO] 
[INFO] --- maven-install-plugin:2.4:install (default-install) @ dist-assembly ---
[INFO] Installing /git/java-tutorial/assembly/pom.xml to /home/dave/.m2/repository/dave/dist-assembly/1.0.0-SNAPSHOT/dist-assembly-1.0.0-SNAPSHOT.pom
[INFO] Installing /git/java-tutorial/assembly/target/dist-assembly-1.0.0-SNAPSHOT-package-artifacts.tar to /home/dave/.m2/repository/dave/dist-assembly/1.0.0-SNAPSHOT/dist-assembly-1.0.0-SNAPSHOT-package-artifacts.tar
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for parent 1.0.0-SNAPSHOT:
[INFO] 
[INFO] parent ............................................. SUCCESS [  0.208 s]
[INFO] common ............................................. SUCCESS [  1.436 s]
[INFO] dist-assembly ...................................... SUCCESS [  0.301 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  2.049 s
[INFO] Finished at: 2022-12-08T20:50:54+01:00
[INFO] ------------------------------------------------------------------------
[dave@dave java-tutorial]$ tar tvf /git/java-tutorial/assembly/target/dist-1.0.0-SNAPSHOT-package-artifacts.tar
-rw-r--r-- dave/dave      5181 2022-12-08 20:47 modules/common-1.0.0-SNAPSHOT.jar
drwxr-xr-x dave/dave         0 2022-12-08 20:35 docs/
-rw-r--r-- dave/dave        12 2022-12-08 20:35 docs/file-to-add.txt

Project structure

./common
./common/src
./common/src/main
./common/src/main/java
./common/src/main/java/gc
./common/src/main/java/gc/LogGC.java
./common/src/main/java/generics
./common/src/main/java/generics/AbstractValue.java
./common/src/main/java/generics/BoxInteger.java
./common/src/main/java/generics/BoxString.java
./common/src/main/java/generics/GenericsTutorial.java
./common/src/main/java/ldap
./common/src/main/java/ldap/TestLDAP.java
./common/pom.xml
./assembly
./assembly/dist-assembly.xml
./assembly/pom.xml
./add-to-distribution
./add-to-distribution/docs
./add-to-distribution/docs/file-to-add.txt
./pom.xml


Sample code

 ear

      <plugin>
        <artifactId>maven-ear-plugin</artifactId>
        <version>3.3.0</version>
        <configuration>
          <!-- configuration elements goes here -->
        </configuration>
      </plugin>

Packaged file name

${project.build.directory}/${project.build.finalName}.${project.packaging}

Copy all project dependencies to target/lib

<plugin>
   <artifactId>maven-dependency-plugin</artifactId>
   <executions>
      <execution>
         <phase>package</phase>
         <goals>
             <goal>copy-dependencies</goal>
         </goals>
             <configuration>
               <outputDirectory>${project.build.directory}/lib</outputDirectory>
             </configuration>
       </execution>
    </executions>
</plugin>

Exclude transitive dependencies 

  <dependency>
            <groupId>com.dave</groupId>
            <artifactId>dave-module</artifactId>
            <version>1.0.0</version>
            <exclusions>
                <exclusion>
                    <groupId>*</groupId>
                    <artifactId>*</artifactId>
                </exclusion>
            </exclusions>
</dependency>

 war

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>3.3.2</version>
        <configuration>
          <webappDirectory>/sample/servlet/container/deploy/directory</webappDirectory>
        </configuration>
      </plugin>
    </plugins>
  </build>

assembly 

Exclude artifacts from dependency set

      <dependencySets>
        <dependencySet>
          ....
          <excludes>
            <exclude>commons-lang:commons-lang</exclude>
            <exclude>log4j:log4j</exclude>
          </excludes>
        </dependencySet>
        ....
      </dependencySets>

Full assembly descriptor

    <assembly xmlns="http://maven.apache.org/ASSEMBLY/2.1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.1.1 https://maven.apache.org/xsd/assembly-2.1.1.xsd">
      <id/>
      <formats/>
      <includeBaseDirectory/>
      <baseDirectory/>
      <includeSiteDirectory/>
      <containerDescriptorHandlers>
        <containerDescriptorHandler>
          <handlerName/>
          <configuration/>
        </containerDescriptorHandler>
      </containerDescriptorHandlers>
      <moduleSets>
        <moduleSet>
          <useAllReactorProjects/>
          <includeSubModules/>
          <includes/>
          <excludes/>
          <sources>
            <useDefaultExcludes/>
            <outputDirectory/>
            <includes/>
            <excludes/>
            <fileMode/>
            <directoryMode/>
            <fileSets>
              <fileSet>
                <useDefaultExcludes/>
                <outputDirectory/>
                <includes/>
                <excludes/>
                <fileMode/>
                <directoryMode/>
                <directory/>
                <lineEnding/>
                <filtered/>
                <nonFilteredFileExtensions/>
              </fileSet>
            </fileSets>
            <includeModuleDirectory/>
            <excludeSubModuleDirectories/>
            <outputDirectoryMapping/>
          </sources>
          <binaries>
            <outputDirectory/>
            <includes/>
            <excludes/>
            <fileMode/>
            <directoryMode/>
            <attachmentClassifier/>
            <includeDependencies/>
            <dependencySets>
              <dependencySet>
                <outputDirectory/>
                <includes/>
                <excludes/>
                <fileMode/>
                <directoryMode/>
                <useStrictFiltering/>
                <outputFileNameMapping/>
                <unpack/>
                <unpackOptions>
                  <includes/>
                  <excludes/>
                  <filtered/>
                  <nonFilteredFileExtensions/>
                  <lineEnding/>
                  <useDefaultExcludes/>
                  <encoding/>
                </unpackOptions>
                <scope/>
                <useProjectArtifact/>
                <useProjectAttachments/>
                <useTransitiveDependencies/>
                <useTransitiveFiltering/>
              </dependencySet>
            </dependencySets>
            <unpack/>
            <unpackOptions>
              <includes/>
              <excludes/>
              <filtered/>
              <nonFilteredFileExtensions/>
              <lineEnding/>
              <useDefaultExcludes/>
              <encoding/>
            </unpackOptions>
            <outputFileNameMapping/>
          </binaries>
        </moduleSet>
      </moduleSets>
      <fileSets>
        <fileSet>
          <useDefaultExcludes/>
          <outputDirectory/>
          <includes/>
          <excludes/>
          <fileMode/>
          <directoryMode/>
          <directory/>
          <lineEnding/>
          <filtered/>
          <nonFilteredFileExtensions/>
        </fileSet>
      </fileSets>
      <files>
        <file>
          <source/>
          <sources/>
          <outputDirectory/>
          <destName/>
          <fileMode/>
          <lineEnding/>
          <filtered/>
        </file>
      </files>
      <dependencySets>
        <dependencySet>
          <outputDirectory/>
          <includes/>
          <excludes/>
          <fileMode/>
          <directoryMode/>
          <useStrictFiltering/>
          <outputFileNameMapping/>
          <unpack/>
          <unpackOptions>
            <includes/>
            <excludes/>
            <filtered/>
            <nonFilteredFileExtensions/>
            <lineEnding/>
            <useDefaultExcludes/>
            <encoding/>
          </unpackOptions>
          <scope/>
          <useProjectArtifact/>
          <useProjectAttachments/>
          <useTransitiveDependencies/>
          <useTransitiveFiltering/>
        </dependencySet>
      </dependencySets>
      <repositories>
        <repository>
          <outputDirectory/>
          <includes/>
          <excludes/>
          <fileMode/>
          <directoryMode/>
          <includeMetadata/>
          <groupVersionAlignments>
            <groupVersionAlignment>
              <id/>
              <version/>
              <excludes/>
            </groupVersionAlignment>
          </groupVersionAlignments>
          <scope/>
        </repository>
      </repositories>
      <componentDescriptors/>
    </assembly>

Saturday, December 3, 2022

Calling Ant from Maven using maven-antrun-plugin

 HOWTO

Sample code

            <plugin>
                <artifactId>maven-antrun-plugin</artifactId>
                <version>3.1.0</version>
                <executions>
                    <execution>
                        <phase>
                            package
                        </phase>
                        <configuration>
                            <target>
                                <echoproperties />
                                <property name="compile_classpath" refid="maven.compile.classpath" />
                                <property name="runtime_classpath" refid="maven.runtime.classpath" />
                                <property name="test_classpath" refid="maven.test.classpath" />
                                <property name="plugin_classpath" refid="maven.plugin.classpath" />
                                 
                                <echo message="compile classpath: ${compile_classpath}" />
                                <echo message="runtime classpath: ${runtime_classpath}" />
                                <echo message="test classpath:    ${test_classpath}" />
                                <echo message="plugin classpath:  ${plugin_classpath}" />
                            </target>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

Ant packaged JAR installed into Maven repository

Code

<jar destfile="${project.build.directory}/ant-generated.jar" 
      basedir="${project.build.directory}/classes"
      includes="$(project.build.directory}//classes**/*.class" 
      excludes="**/Test.class"
/>

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-install-plugin</artifactId>
                <version>2.5.1</version>
                <configuration>
                    <groupId>dave</groupId>
                    <artifactId>ant-jar</artifactId>
                    <version>1.0</version>
                    <packaging>jar</packaging>
                    <file>target/ant-generated.jar</file>
                    <generatePom>true</generatePom>
                </configuration>
                <executions>
                    <execution>
                        <id>install-jar-lib</id>
                        <goals>
                            <goal>install-file</goal>
                        </goals>
                        <phase>package</phase>
                    </execution>
                </executions>
</plugin>

Output

INFO]       [jar] Building MANIFEST-only jar: /git/java-tutorial/common/target/ant-generated.jar
[INFO] Executed tasks
[INFO] 
[INFO] --- maven-install-plugin:2.5.1:install-file (install-jar-lib) @ tutorial ---
[INFO] pom.xml not found in ant-generated.jar
[INFO] Installing /git/java-tutorial/common/target/ant-generated.jar to /home/dave/.m2/repository/dave/ant-jar/1.0/ant-jar-1.0.jar
[INFO] Installing /tmp/mvninstall5653662900106884773.pom to /home/dave/.m2/repository/dave/ant-jar/1.0/ant-jar-1.0.pom

Special Maven properties exported to Ant


maven.multiModuleProjectDirectory=/git/java-tutorial
project.build.directory=/git/java-tutorial/common/target

Maven classpath exported into Ant

[WARNING]      [echo] compile classpath: /git/java-tutorial/common/target/classes
[WARNING]      [echo] runtime classpath: /git/java-tutorial/common/target/classes
[WARNING]      [echo] test classpath:    /git/java-tutorial/common/target/test-classes:/git/java-tutorial/common/target/classes:/home/dave/.m2/repository/junit/junit/4.11/junit-4.11.jar:/home/dave/.m2/repository/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar
[WARNING]      [echo] plugin classpath:  /home/dave/.m2/repository/org/apache/maven/plugins/maven-antrun-plugin/3.1.0/maven-antrun-plugin-3.1.0.jar:/home/dave/.m2/repository/org/codehaus/plexus/plexus-utils/3.4.1/plexus-utils-3.4.1.jar:/home/dave/.m2/repository/org/apache/ant/ant/1.10.12/ant-1.10.12.jar:/home/dave/.m2/repository/org/apache/ant/ant-launcher/1.10.12/ant-launcher-1.10.12.jar
                      

Exporting properties from Maven to ant 

 See https://maven.apache.org/plugins/maven-antrun-plugin/usage.html 

If the Maven property you want to use is not available in an external file, you will have to redefine the property before calling ant.

      <property name="maven.project.url" value="${project.url}"/>
      <ant antfile="build.xml"/>

 Ant  properties defined in  maven-antrun-plugin call

FO] --- maven-antrun-plugin:3.1.0:run (default) @ tutorial ---
[INFO] Executing tasks
[INFO] [echoproperties] #Ant properties
[INFO] [echoproperties] #Sat Dec 03 19:41:56 CET 2022
[INFO] [echoproperties] ant.file.maven-antrun-=/git/java-tutorial/common/target/antrun/build-main.xml
[INFO] [echoproperties] sun.desktop=gnome
[INFO] [echoproperties] awt.toolkit=sun.awt.X11.XToolkit
[INFO] [echoproperties] project.build.directory=/git/java-tutorial/common/target
[INFO] [echoproperties] java.specification.version=11
[INFO] [echoproperties] failOnMissingWebXml=false
[INFO] [echoproperties] ant.project.name=maven-antrun-
[INFO] [echoproperties] sun.cpu.isalist=
[INFO] [echoproperties] sun.jnu.encoding=UTF-8
[INFO] [echoproperties] git.build.version=0.0.1-SNAPSHOT
[INFO] [echoproperties] java.class.path=/app/weblogic/oracle_common/modules/thirdparty/apache-maven_bundle/3.6.1.0.0/apache-maven-3.6.1/boot/plexus-classworlds-2.6.0.jar
[INFO] [echoproperties] project.name=tutorial
[INFO] [echoproperties] project.build.testOutputDirectory=/git/java-tutorial/common/target/test-classes
[INFO] [echoproperties] java.vm.vendor=Oracle Corporation
[INFO] [echoproperties] sun.arch.data.model=64
[INFO] [echoproperties] settings.localRepository=/home/dave/.m2/repository
[INFO] [echoproperties] project.groupId=dave
[INFO] [echoproperties] java.vendor.url=https\://openjdk.java.net/
[INFO] [echoproperties] user.timezone=Europe/Prague
[INFO] [echoproperties] project.build.outputDirectory=/git/java-tutorial/common/target/classes
[INFO] [echoproperties] maven.conf=/app/weblogic/oracle_common/modules/thirdparty/apache-maven_bundle/3.6.1.0.0/apache-maven-3.6.1/conf
[INFO] [echoproperties] java.vm.specification.version=11
[INFO] [echoproperties] os.name=Linux
[INFO] [echoproperties] ant.file.type.maven-antrun-=file
[INFO] [echoproperties] user.country=US
[INFO] [echoproperties] sun.java.launcher=SUN_STANDARD
[INFO] [echoproperties] sun.boot.library.path=/usr/java/jdk-11.0.16.1/lib
[INFO] [echoproperties] sun.java.command=org.codehaus.plexus.classworlds.launcher.Launcher clean package
[INFO] [echoproperties] jdk.debug=release
[INFO] [echoproperties] maven.home=/app/weblogic/oracle_common/modules/thirdparty/apache-maven_bundle/3.6.1.0.0/apache-maven-3.6.1
[INFO] [echoproperties] sun.cpu.endian=little
[INFO] [echoproperties] maven.compiler.source=11
[INFO] [echoproperties] user.home=/home/dave
[INFO] [echoproperties] project.build.testSourceDirectory=/git/java-tutorial/common/src/test/java
[INFO] [echoproperties] user.language=en
[INFO] [echoproperties] org.hamcrest\:hamcrest-core\:jar=/home/dave/.m2/repository/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar
[INFO] [echoproperties] java.specification.vendor=Oracle Corporation
[INFO] [echoproperties] project.artifactId=tutorial
[INFO] [echoproperties] project.version=0.0.1-SNAPSHOT
[INFO] [echoproperties] java.version.date=2022-08-18
[INFO] [echoproperties] java.home=/usr/java/jdk-11.0.16.1
[INFO] [echoproperties] basedir=/git/java-tutorial/common
[INFO] [echoproperties] file.separator=/
[INFO] [echoproperties] project.packaging=jar
[INFO] [echoproperties] java.vm.compressedOopsMode=Zero based
[INFO] [echoproperties] line.separator=\n
[INFO] [echoproperties] ant.java.version=11
[INFO] [echoproperties] java.specification.name=Java Platform API Specification
[INFO] [echoproperties] java.vm.specification.vendor=Oracle Corporation
[INFO] [echoproperties] java.awt.graphicsenv=sun.awt.X11GraphicsEnvironment
[INFO] [echoproperties] git.commit.id.full=ff3ab46b0d66dfa9c433058be438f2cb0c2ea3b1
[INFO] [echoproperties] git.build.time=2022-12-03T19\:41\:55+0100
[INFO] [echoproperties] sun.management.compiler=HotSpot 64-Bit Tiered Compilers
[INFO] [echoproperties] java.runtime.version=11.0.16.1+1-LTS-1
[INFO] [echoproperties] user.name=dave
[INFO] [echoproperties] ant.file=/git/java-tutorial/common/pom.xml
[INFO] [echoproperties] path.separator=\:
[INFO] [echoproperties] securerandom.source=file\:/dev/./urandom
[INFO] [echoproperties] os.version=6.0.10-200.fc36.x86_64
[INFO] [echoproperties] java.runtime.name=Java(TM) SE Runtime Environment
[INFO] [echoproperties] file.encoding=UTF-8
[INFO] [echoproperties] guice.disable.misplaced.annotation.check=true
[INFO] [echoproperties] java.vm.name=Java HotSpot(TM) 64-Bit Server VM
[INFO] [echoproperties] java.vendor.version=18.9
[INFO] [echoproperties] localRepository=\      id\: local\n      url\: file\:///home/dave/.m2/repository/\n   layout\: default\nsnapshots\: [enabled \=> true, update \=> always]\n releases\: [enabled \=> true, update \=> always]\n
[INFO] [echoproperties] ant.core.lib=/home/dave/.m2/repository/org/apache/ant/ant/1.10.12/ant-1.10.12.jar
[INFO] [echoproperties] java.vendor.url.bug=https\://bugreport.java.com/bugreport/
[INFO] [echoproperties] java.io.tmpdir=/tmp
[INFO] [echoproperties] java.version=11.0.16.1
[INFO] [echoproperties] user.dir=/git/java-tutorial
[INFO] [echoproperties] os.arch=amd64
[INFO] [echoproperties] maven.multiModuleProjectDirectory=/git/java-tutorial
[INFO] [echoproperties] git.commit.id.abbrev=ff3ab46
[INFO] [echoproperties] java.vm.specification.name=Java Virtual Machine Specification
[INFO] [echoproperties] java.awt.printerjob=sun.print.PSPrinterJob
[INFO] [echoproperties] sun.os.patch.level=unknown
[INFO] [echoproperties] ant.version=Apache Ant(TM) version 1.10.12 compiled on October 13 2021
[INFO] [echoproperties] maven.compiler.target=11
[INFO] [echoproperties] java.library.path=/usr/java/packages/lib\:/usr/lib64\:/lib64\:/lib\:/usr/lib
[INFO] [echoproperties] project.build.sourceDirectory=/git/java-tutorial/common/src/main/java
[INFO] [echoproperties] java.vm.info=mixed mode
[INFO] [echoproperties] java.vendor=Oracle Corporation
[INFO] [echoproperties] java.vm.version=11.0.16.1+1-LTS-1
[INFO] [echoproperties] classworlds.conf=/app/weblogic/oracle_common/modules/thirdparty/apache-maven_bundle/3.6.1.0.0/apache-maven-3.6.1/bin/m2.conf
[INFO] [echoproperties] sun.io.unicode.encoding=UnicodeLittle
[INFO] [echoproperties] library.jansi.path=/app/weblogic/oracle_common/modules/thirdparty/apache-maven_bundle/3.6.1.0.0/apache-maven-3.6.1/lib/jansi-native
[INFO] [echoproperties] maven.project.dependencies.versions=4.11\:1.3\:
[INFO] [echoproperties] java.class.version=55.0
[INFO] [echoproperties] junit\:junit\:jar=/home/dave/.m2/repository/junit/junit/4.11/junit-4.11.jar
[INFO] [echoproperties] ant.project.default-target=main
[WARNING]      [echo] compile classpath: /git/java-tutorial/common/target/classes
[WARNING]      [echo] runtime classpath: /git/java-tutorial/common/target/classes
[WARNING]      [echo] test classpath:    /git/java-tutorial/common/target/test-classes:/git/java-tutorial/common/target/classes:/home/dave/.m2/repository/junit/junit/4.11/junit-4.11.jar:/home/dave/.m2/repository/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar
[WARNING]      [echo] plugin classpath:  /home/dave/.m2/repository/org/apache/maven/plugins/maven-antrun-plugin/3.1.0/maven-antrun-plugin-3.1.0.jar:/home/dave/.m2/repository/org/codehaus/plexus/plexus-utils/3.4.1/plexus-utils-3.4.1.jar:/home/dave/.m2/repository/org/apache/ant/ant/1.10.12/ant-1.10.12.jar:/home/dave/.m2/repository/org/apache/ant/ant-launcher/1.10.12/ant-launcher-1.10.12.jar

Monday, November 28, 2022

Maven helper plugin - add sources, compile plugin - include/exclude sources, JAR plugin - include/exclude classes, create additional JARs from module with classifier

 HOWTO

Control what is compiled in Maven module - non-standard configuration

Input

  • Add other Java sources 
  • Add other resource files
  • Filter sources

Output 

  •  Filter classes  added into JAR
  •  Create additional JARs from compiled sources

buider-helper-maven-plugin configuration

add sources from other modules
<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <version>3.3.0</version>
            <executions>
                <execution>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>add-source</goal>
                    </goals>
                    <configuration>
                        <sources>
                            <source>src/main/generated</source>
                        </sources>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

maven-compile-plugin configuration 

  • define different main source dir
  • add sources from other modules
<build>
    <sourceDirectory>../moduleB</sourceDirectory>
    <plugins>
        <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.10.1</version>
        <configuration>
        <includes>
            <include>../moduleC/src/main/java/**/*.java</include>
            <include>../moduleD/src/main/java/**/*.java</include>
        </includes>
        </configuration>
        </plugin>
    </plugins>
</build>

maven-resources-plugin

  • add additional files to resources to be included in package
      <plugin>
        <artifactId>maven-resources-plugin</artifactId>
        <version>3.3.0</version>
        <executions>
          <execution>
            <id>copy-resources</id>
            <!-- here the phase you need -->
            <phase>validate</phase>
            <goals>
              <goal>copy-resources</goal>
            </goals>
            <configuration>
              <outputDirectory>${basedir}/target/extra-resources</outputDirectory>
              <resources>          
                <resource>
                  <directory>src/non-packaged-resources</directory>
                  <filtering>true</filtering>
                </resource>
              </resources>              
            </configuration>            
          </execution>
        </executions>
      </plugin>


maven-jar-plugin configuration 

  • - include/exclude classes from module JAR
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.3.0</version>
                <configuration>
                    <includes>
                        <include>**/generics/*</include>
                    </includes>
                </configuration>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                        <configuration>
                            <classifier>test-ldap</classifier>
                            <includes>
                                <include>**/ldap/*</include>
                            </includes>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

JARs created

[INFO] --- maven-jar-plugin:3.3.0:jar (default-jar) @ tutorial ---
[INFO] Building jar: /git/java-tutorial/target/tutorial.jar
[INFO] 
[INFO] --- maven-jar-plugin:3.3.0:jar (default) @ tutorial ---
[INFO] Building jar: /git/java-tutorial/target/tutorial-test-ldap.jar

Monday, March 21, 2022

Create GihHub Action with Maven build

HOWTO

 

GitHub

  •  https://github.com/dveselka/java-tutorial/tree/master/.github/workflows

 

Workflow file

# This workflow will build a Java project with Maven, and cache/restore any dependencies to improve the workflow execution time
# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven

name: Java CI with Maven

on: [push]

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2
    - name: Set up JDK 11
      uses: actions/setup-java@v2
      with:
        java-version: '11'
        distribution: 'temurin'
        cache: maven
    - name: Build with Maven
      run: mvn -B package --file pom.xml

 

Run list


 Job detail


 


Saturday, January 29, 2022

Using Maven with Weblogic 14.1.1

 HOWTO

 

GitHub

 

Set env 

dave@dave dave-basic-webapp-ejb-project]$ . /app/weblogic/wlserver/server/bin/setWLSEnv.sh
CLASSPATH=/usr/java/jdk-11.0.13/lib/tools.jar:/home/app/weblogic/wlserver/modules/features/wlst.wls.classpath.jar:

PATH=/home/app/weblogic/wlserver/server/bin:/home/app/weblogic/wlserver/../oracle_common/modules/thirdparty/org.apache.ant/1.10.5.0.0/apache-ant-1.10.5/bin:/usr/java/jdk-11.0.13/bin:/usr/java/jdk-11.0.13/bin:/app/weblogic/oracle_common/modules/thirdparty/apache-maven_bundle/3.6.1.0.0/apache-maven-3.6.1//bin:/app/weblogic-14.1.1/oracle_common/modules/thirdparty/apache-maven_bundle/3.6.1.0.0/apache-maven-3.6.1//bin:/home/dave/.local/bin:/home/dave/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/app/weblogic/oracle_common/modules/thirdparty/apache-maven_bundle/3.6.1.0.0/apache-maven-3.6.1//bin

Your environment has been set.

 

Compile and deploy the project - requires Maven configuration - see below 

Use Weblogic path /app/weblogic - Maven plugin had issues with Oracle JARs synced to local repository 

Error "java.lang.NoClassDefFoundError Required class missing : weblogic/Deployer" After deleting com/oracle/weblogic in Maven local repo and resync deploy works

dave@dave dave-basic-webapp-ejb-project]$ mvn  clean  compile package  pre-integration-test 
[INFO] Scanning for projects...
[INFO] 
[INFO] -----------------< dave:dave-basic-webapp-ejb-project >-----------------
[INFO] Building basicWebappEjb 1.0-SNAPSHOT
[INFO] --------------------------------[ war ]---------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ dave-basic-webapp-ejb-project ---
[INFO] Deleting /git/weblogic/dave-basic-webapp-ejb-project/target
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ dave-basic-webapp-ejb-project ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 1 resource
[INFO] 
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ dave-basic-webapp-ejb-project ---
[WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent!
[INFO] Compiling 6 source files to /git/weblogic/dave-basic-webapp-ejb-project/target/classes
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ dave-basic-webapp-ejb-project ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 1 resource
[INFO] 
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ dave-basic-webapp-ejb-project ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ dave-basic-webapp-ejb-project ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory /git/weblogic/dave-basic-webapp-ejb-project/src/test/resources
[INFO] 
[INFO] --- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ dave-basic-webapp-ejb-project ---
[INFO] No sources to compile
[INFO] 
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ dave-basic-webapp-ejb-project ---
[INFO] No tests to run.
[INFO] 
[INFO] --- maven-war-plugin:2.1.1:war (default-war) @ dave-basic-webapp-ejb-project ---
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by com.thoughtworks.xstream.core.util.Fields (file:/home/dave/.m2/repository/com/thoughtworks/xstream/xstream/1.3.1/xstream-1.3.1.jar) to field java.util.Properties.defaults
WARNING: Please consider reporting this to the maintainers of com.thoughtworks.xstream.core.util.Fields
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
[INFO] Packaging webapp
[INFO] Assembling webapp [dave-basic-webapp-ejb-project] in [/git/weblogic/dave-basic-webapp-ejb-project/target/basicWebappEjb]
[INFO] Processing war project
[INFO] Copying webapp resources [/git/weblogic/dave-basic-webapp-ejb-project/src/main/webapp]
[INFO] Webapp assembled in [105 msecs]
[INFO] Building war: /git/weblogic/dave-basic-webapp-ejb-project/target/basicWebappEjb.war
[INFO] WEB-INF/web.xml already added, skipping
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ dave-basic-webapp-ejb-project ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 1 resource
[INFO] 
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ dave-basic-webapp-ejb-project ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ dave-basic-webapp-ejb-project ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory /git/weblogic/dave-basic-webapp-ejb-project/src/test/resources
[INFO] 
[INFO] --- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ dave-basic-webapp-ejb-project ---
[INFO] No sources to compile
[INFO] 
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ dave-basic-webapp-ejb-project ---
[INFO] No tests to run.
[INFO] Skipping execution of surefire because it has already been run for this configuration
[INFO] 
[INFO] --- maven-war-plugin:2.1.1:war (default-war) @ dave-basic-webapp-ejb-project ---
[INFO] Packaging webapp
[INFO] Assembling webapp [dave-basic-webapp-ejb-project] in [/git/weblogic/dave-basic-webapp-ejb-project/target/basicWebappEjb]
[INFO] Processing war project
[INFO] Copying webapp resources [/git/weblogic/dave-basic-webapp-ejb-project/src/main/webapp]
[INFO] Webapp assembled in [66 msecs]
[INFO] Building war: /git/weblogic/dave-basic-webapp-ejb-project/target/basicWebappEjb.war
[INFO] WEB-INF/web.xml already added, skipping
[INFO] 
[INFO] --- weblogic-maven-plugin:14.1.1-0-0:deploy (default) @ dave-basic-webapp-ejb-project ---
[INFO] Command flags are: -noexit -deploy -username weblogic -password ******* -name basicWebappEjb -source /git/weblogic/dave-basic-webapp-ejb-project/target/basicWebappEjb.war -verbose -adminurl t3://127.0.0.1:7001
weblogic.Deployer invoked with options:  -noexit -deploy -username weblogic -name basicWebappEjb -source /git/weblogic/dave-basic-webapp-ejb-project/target/basicWebappEjb.war -verbose -adminurl t3://127.0.0.1:7001
<Jan 30, 2022, 9:00:58 AM Central European Standard Time> <Info> <J2EE Deployment SPI> <BEA-260121> <Initiating deploy operation for application, basicWebappEjb [archive: /git/weblogic/dave-basic-webapp-ejb-project/target/basicWebappEjb.war], to configured targets.> 
Task 6 initiated: [Deployer:149026]deploy application basicWebappEjb on AdminServer.
Task 6 completed: [Deployer:149026]deploy application basicWebappEjb on AdminServer.
Target state: deploy completed on Server AdminServer

Target Assignments:
+ basicWebappEjb  AdminServer
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  10.671 s
[INFO] Finished at: 2022-01-30T09:01:01+01:00
[INFO] ------------------------------------------------------------------------


 


Install Oracle plugin to local repository

Follow instructions from Oracle Weblogic 14.1.1 HOWTO https://docs.oracle.com/en/middleware/standalone/weblogic-server/14.1.1.0/wlprg/maven.html#GUID-C6FC7582-2D1C-4EA5-B000-71AE9A2F2B05 

 


  cd /app/weblogic-14.1.1/
  find . -name   oracle*maven-*.jar
  cd  ./oracle_common/plugins/maven/com/oracle/maven/oracle-maven-sync/14.1.1/

  ls ~/.m2/repository/
  mvn install:install-file -DpomFile=oracle-maven-sync-14.1.1.pom -Dfile=oracle-maven-sync-14.1.1.jar
  mvn com.oracle.maven:oracle-maven-sync:push -DoracleHome=/app/weblogic-14.1.1/
  mvn archetype:crawl -Dcatalog=$HOME/.m2/archetype-catalog.xml

  List plugins goals

[dave@dave dave-basic-webapp-ejb-project]$ mvn help:describe -DgroupId=com.oracle.weblogic -DartifactId=weblogic-maven-plugin -Dversion=14.1.1-0-0
[INFO] Scanning for projects...
[INFO] 
[INFO] -----------------< dave:dave-basic-webapp-ejb-project >-----------------
[INFO] Building basicWebappEjb 1.0-SNAPSHOT
[INFO] --------------------------------[ war ]---------------------------------
[INFO] 
[INFO] --- maven-help-plugin:3.2.0:describe (default-cli) @ dave-basic-webapp-ejb-project ---
[INFO] com.oracle.weblogic:weblogic-maven-plugin:14.1.1-0-0

Name: weblogic-maven-plugin
Description: The Oracle WebLogic Server 12.3.1 Maven plugin
Group Id: com.oracle.weblogic
Artifact Id: weblogic-maven-plugin
Version: 14.1.1-0-0
Goal Prefix: weblogic

This plugin has 23 goals:

weblogic:appc
  Description: This goal is a wrapper for the weblogic.appc compiler.

weblogic:create-domain
  Description: Create a domain for WebLogic Server using the default domain
    template. For more complex domain creation use the WLST goal. Note:
    Starting in WLS 12.2.1, there is a single unified version of WLST that
    automatically includes the WLST environment from all products in the
    ORACLE_HOME.

weblogic:deploy
  Description: Deploys an application to WebLogic Server (supports all
    formats WAR, JAR, RAR, EAR, etc.)

weblogic:distribute-app
  Description: Prepares deployment files for deployment by copying deployment
    files to target servers and validating them.

weblogic:install
  Description: Installs WebLogic Server

weblogic:list-apps
  Description: Lists the deployment names for applications and stand-alone
    modules deployed distributed, or installed to the domain

weblogic:purge-tasks
  Description: Flushes out retired deployment tasks

weblogic:redeploy
  Description: Redeploys a running application or part of a running
    application

weblogic:remove-domain
  Description: This class provides basic capabilities to remove a domain
    directory.

weblogic:start-app
  Description: Starts an application

weblogic:start-server
  Description: Starts WebLogic Server.

weblogic:stop-app
  Description: Stops an application

weblogic:stop-server
  Description: This goals run a stop script to stop WebLogic Server.

weblogic:undeploy
  Description: Stops the deployment unit and removes staged files from target
    servers

weblogic:uninstall
  Description: Uninstalls WebLogic Server

weblogic:update-app
  Description: Updates an application's deployment plan by redistributing the
    plan files and reconfiguring the application based on the new plan
    contents.

weblogic:wlst
  Description: This goal is a wrapper for the WLST scripting tool.
    Note: Starting in WLS 12.2.1, there is a single unified version of WLST
    that automatically includes the WLST environment from all products in the
    ORACLE_HOME.

weblogic:wlst-client
  Description: WLST wrapper for Maven that does not require a server install
    for WLST online commands.

weblogic:ws-clientgen
  Description: A Maven goal to generate client web service artifacts from a
    WSDL Note the differences between clientgen Ant task and Maven goal:
    clientgen goal only generates JAXWS web service artifacts, while Ant task
    has JAXRPC as the default. At the moment there is no way to direct
    clientgen goal to also compile and package generated artifacts.
  Deprecated. No reason given

weblogic:ws-jwsc
  Description: This goal builds a JAX-WS web service, generates source code,
    data binding artifacts, deployment descriptors, and so on into an output
    directory.
  Deprecated. No reason given

weblogic:ws-wsdlc
  Description: This goal generates, from an existing WSDL file, a set of
    artifacts that together provide a partial Java implementation of the Web
    Service described by the WSDL file.
  Deprecated. No reason given

weblogic:wsgen
  Description: Reads a JAX-WS service endpoint implementation class and
    generates all of the portable artifacts for a JAX-WS web service.

weblogic:wsimport
  Description: Parses wsdl and binding files and generates Java code needed
    to access it.

For more information, run 'mvn help:describe [...] -Ddetail'

Create project using Eclipse and Maven archetype 


 

 

Sunday, December 27, 2020

Create Java EE 8 mininal project from Maven archetype

 HOWTO

 

Project

 https://github.com/dveselka/java-ee-8

Generate project from Adam Bien minimal archetype

[dave@dave git]$ cd java-ee-8/
[dave@dave java-ee-8]$ mvn archetype:generate -Dfilter=com.airhacks:javaee8-essentials-archetype
[INFO] Scanning for projects...
[INFO] 
[INFO] ------------------< org.apache.maven:standalone-pom >-------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] --------------------------------[ pom ]---------------------------------
[INFO] 
[INFO] >>> maven-archetype-plugin:3.1.2:generate (default-cli) > generate-sources @ standalone-pom >>>
[INFO] 
[INFO] <<< maven-archetype-plugin:3.1.2:generate (default-cli) < generate-sources @ standalone-pom <<<
[INFO] 
[INFO] 
[INFO] --- maven-archetype-plugin:3.1.2:generate (default-cli) @ standalone-pom ---
[INFO] Generating project in Interactive mode
[INFO] No archetype defined. Using maven-archetype-quickstart (org.apache.maven.archetypes:maven-archetype-quickstart:1.0)
Choose archetype:
1: remote -> com.airhacks:javaee8-essentials-archetype (Java EE 8 project quickstart template. Clean, lean and minimalistic.)
Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): : 1
Choose com.airhacks:javaee8-essentials-archetype version: 
1: 0.0.1
2: 0.0.2
3: 0.0.4
Choose a number: 3: 3
Downloading from central: https://repo.maven.apache.org/maven2/com/airhacks/javaee8-essentials-archetype/0.0.4/javaee8-essentials-archetype-0.0.4.pom
Downloaded from central: https://repo.maven.apache.org/maven2/com/airhacks/javaee8-essentials-archetype/0.0.4/javaee8-essentials-archetype-0.0.4.pom (3.9 kB at 13 kB/s)
Downloading from central: https://repo.maven.apache.org/maven2/com/airhacks/javaee8-essentials-archetype/0.0.4/javaee8-essentials-archetype-0.0.4.jar
Downloaded from central: https://repo.maven.apache.org/maven2/com/airhacks/javaee8-essentials-archetype/0.0.4/javaee8-essentials-archetype-0.0.4.jar (3.9 kB at 16 kB/s)
Define value for property 'groupId': com.dave
Define value for property 'artifactId': java-ee8-minimal
Define value for property 'version' 1.0-SNAPSHOT: : 
Define value for property 'package' com.dave: : 
Confirm properties configuration:
groupId: com.dave
artifactId: java-ee8-minimal
version: 1.0-SNAPSHOT
package: com.dave
 Y: : Y
[INFO] ----------------------------------------------------------------------------
[INFO] Using following parameters for creating project from Archetype: javaee8-essentials-archetype:0.0.4
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: groupId, Value: com.dave
[INFO] Parameter: artifactId, Value: java-ee8-minimal
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Parameter: package, Value: com.dave
[INFO] Parameter: packageInPathFormat, Value: com/dave
[INFO] Parameter: package, Value: com.dave
[INFO] Parameter: groupId, Value: com.dave
[INFO] Parameter: artifactId, Value: java-ee8-minimal
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Project created from Archetype in dir: /git/java-ee-8/java-ee8-minimal
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  52.463 s
[INFO] Finished at: 2020-12-27T10:48:01+01:00
[INFO] ------------------------------------------------------------------------

 

Generated project
[dave@dave java-ee-8]$ find java-ee8-minimal/
java-ee8-minimal/
java-ee8-minimal/pom.xml
java-ee8-minimal/Dockerfile
java-ee8-minimal/README.md
java-ee8-minimal/buildAndRun.sh
java-ee8-minimal/src
java-ee8-minimal/src/main
java-ee8-minimal/src/main/java
java-ee8-minimal/src/main/java/com
java-ee8-minimal/src/main/java/com/airhacks
java-ee8-minimal/src/main/java/com/airhacks/JAXRSConfiguration.java
java-ee8-minimal/src/main/java/com/airhacks/ping
java-ee8-minimal/src/main/java/com/airhacks/ping/boundary
java-ee8-minimal/src/main/java/com/airhacks/ping/boundary/PingResource.java
java-ee8-minimal/src/main/resources
java-ee8-minimal/src/main/resources/META-INF
java-ee8-minimal/src/main/resources/META-INF/microprofile-config.properties
java-ee8-minimal/src/main/webapp
java-ee8-minimal/src/main/webapp/WEB-INF
java-ee8-minimal/src/main/webapp/WEB-INF/beans.xml