For the past few years, most of my personal and professional projects are built using Maven. The dependency management and corresponding build lifecycle enable me to do some complex builds (for instance HBase 1.2.5 Client Jars).
When these dependencies change underlying the build change, the build and debugging is a pain. I ran into this plugin Maven Animal Sniffer Plugin. I did have to enable a specific configuration <configuration><includeJavaHome>false</includeJavaHome></configuration>
mvn animal-sniffer:build -f demo-app/pom.xml
[INFO] --- animal-sniffer-maven-plugin:1.16:build (default-cli) @ demo-app ---
[INFO] Parsing signatures from com.github.stephenc.findbugs:findbugs-annotations:jar:1.3.9-1
[INFO] Parsing signatures from log4j:log4j:jar:1.2.17
[INFO] Parsing signatures from /Users/paulbastide/Downloads/animal/demo-app/target/classes
[INFO] Wrote signatures for 337 classes.
I can now store this along with my build. The generated file demo-app/target/demo-app-1.0-SNAPSHOT.signature can then be used to check plugin
Recently, I ran into an issue with a resource referece in an Urban Code Deploy (UCD) resource that did not yet exist. When the value, that doesn’t yet exist I found this a great tip (UCD Documentation).
UCD replaces the missing value with an empty string. It saved my sanity and ease of use.
Most of my projects use Maven to build and coordinate dependencies and run unit and build integration tests. I’ve found it a real pain that I could not generate my swagger docs as part of the build.
I have found a really easy way. In Jenkins, I have a downstream job that runs specific maven goals. The WebSphere Liberty maven goals are documented WebSphere Liberty Maven Documentation. Please note my downstream job is an experimental downstream project; I am a bit concerned about edge cases where the process dies.
The commands of the downstream job are:
mvn dependency:copy-dependencies liberty:install-apps liberty:test-start-server
The commands execute three key elements:
Dummy Server.xml – attached at the bottom
Execution for Goal for pre-integration-test
Execution must follow the copy-dependencies so the war file is copied on in
You can check your server is up and running:
tail -f target/liberty/wlp/usr/servers/defaultServer/logs/messages.log
Download the Swagger (YAML)
curl http://localhost:9080/swagger/api/swagger.yaml -o myswagger.yaml
Recently, I have done a good amount of JAX-RS development, and I needed to kept hitting an issue with forms parameter validation errors on my query params. The errors kept driving me nuts, until I read the documentation and found – jersey.config.servlet.form.queryParams.disabled . I also learned the java property is available for those with code based configuration. ServletProperties.QUERY_PARAMS_AS_FORM_PARAMS_DISABLED
If true then query parameters will not be treated as form parameters (e.g. injectable using @FormParam) in case a Form request is processed by server.
Git Lab Merge Request Templates are a fairly exciting way for me to help drive consistency in the projects I am participating in – internal, external and personal. I created a new folder in .gitlab/issue_templates/and added a file Merge_Request.md ( based on Pull Request). For GitHub (not GitLab) switch the folder to .github.
When you go to raise a Merge Request, you can select a template using the template query parameter on GitHub https://github.com/prb112/examples/compare/readme-update?expand=1&template=Merge_Request.md
You can see the example at Pull Request 4. Developers can select the check boxes and indicate if they are compliant with the minimum to commit.
GitLab is slightly different, and that you select the template from a drop down. I actually prefer this approach which makes it easier to select.
Good luck, go forth and be consistent with Pull Requests and Merge Requests.