We’ve all been there.
You want to achieve a goal, start looking up the appropriate documentation (after failing to find the solution yourself), en apply the documented fix.
And it fails.
That was where I found myself when I wanted to skip the deployment of an OSB 12c artifact when building it with maven.
The regular sequence of things is: package, deploy to server, (test), install to local maven repository, deploy to remote maven repository.
I want to skip the deployment to a running OSB-machine, as I don’t have one available in my setup.
The documentation doesn’t mention anything about skipping a phase, so I reverted to running help:describe on the plugin itself to gather more information.
mvn help:describe -Dplugin=com.oracle.servicebus.plugin:oracle-servicebus-plugin:12.2.1-3-0 –Ddetail
The output is below (emphasis mine):
Name: Oracle Service Bus - Plugin
Description: The Oracle Service Bus development Maven plug-in provides Maven
goals specific to the requirements of Service Bus projects and applications.
You can use it to perform tasks such as packaging Service Bus projects or
resources and deploying the package to a running server.
Group Id: com.oracle.servicebus.plugin
Artifact Id: oracle-servicebus-plugin
Goal Prefix: servicebus
This plugin has 2 goals:
Description: The deploy goal deploys Service Bus projects to a running
server. This goal supports the Service Bus deployment format, SBAR. It does
not require a local server installation. By default, deploying projects
does not apply any updates to environment values. If you want to update the
environment values, you can create a configuration file with the new
environment values and specify that configuration file when you run deploy.
User property: configJar
specifies a precompiler jar for deployment. requires setting of
User property: customization
Specifies the location and name of a Service Bus configuration file that
will update environment values for the environment in which the Service
Bus archive is being deployed.
User property: oraclePassword
Specifies the administrative password.
User property: oracleServerUrl
Specifies the address and port on which the Administration Server is
listening. The default value is: t3://localhost:7001
User property: oracleUsername
Specifies the administrative user name.
User property: projectName
specifies the project name used for deployment with configJar option
Setting skip as true will skip depolyment of sbar.
useSSL (Default: false)
User property: useSSL
Enables the secure sockets layer (SSL) if passes as true.
Description: The package goal creates a configuration JAR file from the
resources associated with a POM file, and packages the resources into a
Service Bus-specific archive file known as an .sbar file. By default, the
Maven plug-in assumes the resources being packaged are project resources,
but a Service Bus application can also include system resources, which are
shared among projects. System resources are packaged differently than
project resources, so when you package system resources, you need to set
the system flag to true.
Specifies a list of files to exclude from the project. Use this to
exclude things like versioning system files.
User property: oracleHome
Specifies the location to the Oracle Fusion Middleware home directory.
You can specify this value as an expression.
system (Default: false)
Specifies whether the resources being packaged are system resources,
which are shared by multiple projects within a Service Bus application.
The default value is false. You must set this value to true when
packaging system resources.
So there we have it! We just need to set -Dskip=true, and be done with it! Yay for documentation inside the plugin!
But, I was dealt a nope-card.
The plugin still tried to deploy my artifact halfway through, and failed miserably as I didn’t have a running server available.
Wait, what? So I followed the documentation inside the plugin, and it still failed?
So I turned to my trusty Java-decompiler, and cracked open the plugin. Mine is located at ~/.m2/repository/com/oracle/servicebus/plugin/oracle-servicebus-plugin/12.2.1-3-0.
The magic happens in the class oracle.sb.maven.plugin.DeployMojo, and shows as:
Success! Just add -Dosb.skip.deploy=true to your command, and you’re all set.
I ended up with:
mvn clean install -DoracleHome= -Dosb.skip.deploy=true