Build Tools

Swagger Maven Plugin

io.openapitools.swagger : swagger-maven-plugin

Maven plugin to generate OpenAPI documentation using Swagger.

Last Version: 2.1.6

Release Date:

Last Version: 5.3.0

Release Date:

Browser Box Parent Project

au.net.causal.maven.plugins : browserbox-parent

Maven plugin to start browsers in containers

Last Version: 1.0

Release Date:

Last Version: 0.10.3

Release Date:

io.wcm.maven.aem-global-parent

io.wcm.maven : io.wcm.maven.aem-global-parent

Global parent for Maven artifact hierarchy for AEM projects. Defines AEM-specific plugins and general Maven settings.

Last Version: 2.0.12

Release Date:

rempl-maven-plugin

com.rempl.plugins : rempl-maven-plugin

Reverse Engineering Meta Programming Library (REMPL) that enables manipulations with source code meta constructs, like classes, methods, files, packages, etc. in runtime.

Last Version: 1.4

Release Date:

flyway-extension-maven-plugin

ch.inftec.flyway : flyway-extension-maven-plugin

InfTec Java Base project that holds the root pom all other InfTec projects will derive from

Last Version: 0.1-RC-1

Release Date:

Milyn :: EDI :: Edifact Java Compiler :: Maven Plugin Mojo

org.milyn : ejc-maven-plugin

Smooks is an extensible framework for building applications for processing XML and non XML data (CSV, EDI, Java etc) using Java.

Last Version: 1.7.1

Release Date:

Bundler Maven Mojo

de.saumya.mojo : bundler-maven-plugin

shared dependencies and plugins for the mojos

Last Version: 1.1.8

Release Date:

Apache Maven One Plugin (RETIRED)

org.apache.maven.plugins : maven-one-plugin

Eases the migration from Maven 1.x to Maven 2.x by providing a POM converter etc.

Last Version: 1.3

Release Date:

wcm.io Maven Release Policy for AEM Cloud Dependencies

io.wcm.maven.release-policies : io.wcm.maven.release-policies.aem-cloud-dependencies

Manages release versionining of https://github.com/wcm-io/io.wcm.maven.aem-cloud-dependencies

Last Version: 1.0.2

Release Date:

Last Version: 1.0.0

Release Date:

FeGen Kotlin Maven Plugin

com.github.materna-se.fegen : fegen-kotlin-maven-plugin

Maven plugin that generates Kotlin code from a Spring Data application to access its REST API

Last Version: 1.0-RC8

Release Date:

Checksum Enforcer

ph.samson.maven : checksum-enforcer-rule

Maven Enforcer custom rule to verify file checksums

Last Version: 0.0.1

Release Date:

maven-parent

com.devonfw : maven-parent

Parent POM for maven-based projects in devonfw.

Last Version: 9

Release Date:

Last Version: 1.0.0

Release Date:

AndroMDA .NET Application Generator Maven Plugin

org.andromda.maven.plugins : andromdanetapp-maven-plugin

A plugin for running AndroMDA's AndroMDANetApp application generator to generate Maven2 AndroMDA powered applications.

Last Version: 3.4

Release Date:

Plugins - SAP CP Maven Plugin Local Neo Runtime

com.sap.cloud.sdk.plugins : scp-neo-maven-plugin

Convenience plugin for deploying a project to the local runtime of SAP Business Technology Platform (Neo).

Last Version: 3.70.0

Release Date:

pact-jvm-provider-maven_2.10

au.com.dius : pact-jvm-provider-maven_2.10

Maven plugin to verify a provider [version 2.1.9+] ================================================== Maven plugin for verifying pacts against a provider. The Maven plugin provides a `verify` goal which will verify all configured pacts against your provider. ## To Use It ### 1. Add the pact-jvm-provider-maven plugin to your `build` section of your pom file. ```xml <build> [...] <plugins> [...] <plugin> <groupId>au.com.dius</groupId> <artifactId>pact-jvm-provider-maven_2.11</artifactId> <version>3.3.8</version> </plugin> [...] </plugins> [...] </build> ``` ### 2. Define the pacts between your consumers and providers You define all the providers and consumers within the configuration element of the maven plugin. ```xml <plugin> <groupId>au.com.dius</groupId> <artifactId>pact-jvm-provider-maven_2.11</artifactId> <version>3.3.8</version> <configuration> <serviceProviders> <!-- You can define as many as you need, but each must have a unique name --> <serviceProvider> <name>provider1</name> <!-- All the provider properties are optional, and have sensible defaults (shown below) --> <protocol>http</protocol> <host>localhost</host> <port>8080</port> <path>/</path> <consumers> <!-- Again, you can define as many consumers for each provider as you need, but each must have a unique name --> <consumer> <name>consumer1</name> <!-- currently supports a file path using pactFile or a URL using pactUrl --> <pactFile>path/to/provider1-consumer1-pact.json</pactFile> </consumer> </consumers> </serviceProvider> </serviceProviders> </configuration> </plugin> ``` ### 3. Execute `mvn pact:verify` You will have to have your provider running for this to pass. ## Verifying all pact files in a directory for a provider. [2.1.10+] You can specify a directory that contains pact files, and the Pact plugin will scan for all pact files that match that provider and define a consumer for each pact file in the directory. Consumer name is read from contents of pact file. ```xml <plugin> <groupId>au.com.dius</groupId> <artifactId>pact-jvm-provider-maven_2.11</artifactId> <version>3.3.8</version> <configuration> <serviceProviders> <!-- You can define as many as you need, but each must have a unique name --> <serviceProvider> <name>provider1</name> <!-- All the provider properties are optional, and have sensible defaults (shown below) --> <protocol>http</protocol> <host>localhost</host> <port>8080</port> <path>/</path> <pactFileDirectory>path/to/pacts</pactFileDirectory> </serviceProvider> </serviceProviders> </configuration> </plugin> ``` ## Enabling insecure SSL [version 2.2.8+] For providers that are running on SSL with self-signed certificates, you need to enable insecure SSL mode by setting `<insecure>true</insecure>` on the provider. ```xml <plugin> <groupId>au.com.dius</groupId> <artifactId>pact-jvm-provider-maven_2.11</artifactId> <version>3.3.8</version> <configuration> <serviceProviders> <serviceProvider> <name>provider1</name> <pactFileDirectory>path/to/pacts</pactFileDirectory> <insecure>true</insecure> </serviceProvider> </serviceProviders> </configuration> </plugin> ``` ## Specifying a custom trust store [version 2.2.8+] For environments that are running their own certificate chains: ```xml <plugin> <groupId>au.com.dius</groupId> <artifactId>pact-jvm-provider-maven_2.11</artifactId> <version>3.3.8</version> <configuration> <serviceProviders> <serviceProvider> <name>provider1</name> <pactFileDirectory>path/to/pacts</pactFileDirectory> <trustStore>relative/path/to/trustStore.jks</trustStore> <trustStorePassword>changeit</trustStorePassword> </serviceProvider> </serviceProviders> </configuration> </plugin> ``` `trustStore` is either relative to the current working (build) directory. `trustStorePassword` defaults to `changeit`. NOTE: The hostname will still be verified against the certificate. ## Modifying the requests before they are sent Sometimes you may need to add things to the requests that can't be persisted in a pact file. Examples of these would be authentication tokens, which have a small life span. The Pact Maven plugin provides a request filter that can be set to a Groovy script on the provider that will be called before the request is made. This script will receive the HttpRequest bound to a variable named `request` prior to it being executed. ```xml <plugin> <groupId>au.com.dius</groupId> <artifactId>pact-jvm-provider-maven_2.11</artifactId> <version>3.3.8</version> <configuration> <serviceProviders> <serviceProvider> <name>provider1</name> <requestFilter> // This is a Groovy script that adds an Authorization header to each request request.addHeader('Authorization', 'oauth-token eyJhbGciOiJSUzI1NiIsIm...') </requestFilter> <consumers> <consumer> <name>consumer1</name> <pactFile>path/to/provider1-consumer1-pact.json</pactFile> </consumer> </consumers> </serviceProvider> </serviceProviders> </configuration> </plugin> ``` __*Important Note:*__ You should only use this feature for things that can not be persisted in the pact file. By modifying the request, you are potentially modifying the contract from the consumer tests! ## Modifying the HTTP Client Used [version 2.2.4+] The default HTTP client is used for all requests to providers (created with a call to `HttpClients.createDefault()`). This can be changed by specifying a closure assigned to createClient on the provider that returns a CloseableHttpClient. For example: ```xml <plugin> <groupId>au.com.dius</groupId> <artifactId>pact-jvm-provider-maven_2.11</artifactId> <version>3.3.8</version> <configuration> <serviceProviders> <serviceProvider> <name>provider1</name> <createClient> // This is a Groovy script that will enable the client to accept self-signed certificates import org.apache.http.ssl.SSLContextBuilder import org.apache.http.conn.ssl.NoopHostnameVerifier import org.apache.http.impl.client.HttpClients HttpClients.custom().setSSLHostnameVerifier(new NoopHostnameVerifier()) .setSslcontext(new SSLContextBuilder().loadTrustMaterial(null, { x509Certificates, s -> true }) .build()) .build() </createClient> <consumers> <consumer> <name>consumer1</name> <pactFile>path/to/provider1-consumer1-pact.json</pactFile> </consumer> </consumers> </serviceProvider> </serviceProviders> </configuration> </plugin> ``` ## Turning off URL decoding of the paths in the pact file [version 3.3.3+] By default the paths loaded from the pact file will be decoded before the request is sent to the provider. To turn this behaviour off, set the system property `pact.verifier.disableUrlPathDecoding` to `true`. __*Important Note:*__ If you turn off the url path decoding, you need to ensure that the paths in the pact files are correctly encoded. The verifier will not be able to make a request with an invalid encoded path. ## Plugin Properties The following plugin properties can be specified with `-Dproperty=value` on the command line or in the configuration section: |Property|Description| |--------|-----------| |pact.showStacktrace|This turns on stacktrace printing for each request. It can help with diagnosing network errors| |pact.showFullDiff|This turns on displaying the full diff of the expected versus actual bodies [version 3.3.6+]| |pact.filter.consumers|Comma seperated list of consumer names to verify| |pact.filter.description|Only verify interactions whose description match the provided regular expression| |pact.filter.providerState|Only verify interactions whose provider state match the provided regular expression. An empty string matches interactions that have no state| Example in the configuration section: ```xml <plugin> <groupId>au.com.dius</groupId> <artifactId>pact-jvm-provider-maven_2.11</artifactId> <version>3.3.8</version> <configuration> <serviceProviders> <serviceProvider> <name>provider1</name> <consumers> <consumer> <name>consumer1</name> <pactFile>path/to/provider1-consumer1-pact.json</pactFile> </consumer> </consumers> </serviceProvider> </serviceProviders> <configuration> <pact.showStacktrace>true</pact.showStacktrace> </configuration> </configuration> </plugin> ``` ## Provider States For each provider you can specify a state change URL to use to switch the state of the provider. This URL will receive the providerState description from the pact file before each interaction via a POST. The stateChangeUsesBody controls if the state is passed in the request body or as a query parameter. These values can be set at the provider level, or for a specific consumer. Consumer values take precedent if both are given. ```xml <plugin> <groupId>au.com.dius</groupId> <artifactId>pact-jvm-provider-maven_2.11</artifactId> <version>3.3.8</version> <configuration> <serviceProviders> <serviceProvider> <name>provider1</name> <stateChangeUrl>http://localhost:8080/tasks/pactStateChange</stateChangeUrl> <stateChangeUsesBody>false</stateChangeUsesBody> <!-- defaults to true --> <consumers> <consumer> <name>consumer1</name> <pactFile>path/to/provider1-consumer1-pact.json</pactFile> <stateChangeUrl>http://localhost:8080/tasks/pactStateChangeForConsumer1</stateChangeUrl> <stateChangeUsesBody>false</stateChangeUsesBody> <!-- defaults to true --> </consumer> </consumers> </serviceProvider> </serviceProviders> </configuration> </plugin> ``` If the `stateChangeUsesBody` is not specified, or is set to true, then the provider state description will be sent as JSON in the body of the request. If it is set to false, it will passed as a query parameter. As for normal requests (see Modifying the requests before they are sent), a state change request can be modified before it is sent. Set `stateChangeRequestFilter` to a Groovy script on the provider that will be called before the request is made. #### Teardown calls for state changes [version 3.2.5/2.4.7+] You can enable teardown state change calls by setting the property `<stateChangeTeardown>true</stateChangeTeardown>` on the provider. This will add an `action` parameter to the state change call. The setup call before the test will receive `action=setup`, and then a teardown call will be made afterwards to the state change URL with `action=teardown`. ## Verifying pact files from a pact broker [version 3.1.1+/2.3.1+] You can setup your build to validate against the pacts stored in a pact broker. The pact plugin will query the pact broker for all consumers that have a pact with the provider based on its name. To use it, just configure the `pactBrokerUrl` or `pactBroker` value for the provider with the base URL to the pact broker. For example: ```xml <plugin> <groupId>au.com.dius</groupId> <artifactId>pact-jvm-provider-maven_2.11</artifactId> <version>3.3.8</version> <configuration> <serviceProviders> <serviceProvider> <name>provider1</name> <stateChangeUrl>http://localhost:8080/tasks/pactStateChange</stateChangeUrl> <pactBrokerUrl>http://pact-broker:5000/</pactBrokerUrl> </serviceProvider> </serviceProviders> </configuration> </plugin> ``` ### Verifying pacts from an authenticated pact broker [version 3.3.5+] If your pact broker requires authentication (basic authentication is only supported), you can configure the username and password to use by configuring the `authentication` element of the `pactBroker` element of your provider. For example: ```xml <plugin> <groupId>au.com.dius</groupId> <artifactId>pact-jvm-provider-maven_2.11</artifactId> <version>3.3.8</version> <configuration> <serviceProviders> <serviceProvider> <name>provider1</name> <stateChangeUrl>http://localhost:8080/tasks/pactStateChange</stateChangeUrl> <pactBroker> <url>http://pactbroker:1234</url> <authentication> <username>test</username> <password>test</password> </authentication> </pactBroker> </serviceProvider> </serviceProviders> </configuration> </plugin> ``` ### Verifying pacts from an pact broker that match particular tags [version 3.3.5+] If your pacts in your pact broker have been tagged, you can set the tags to fetch by configuring the `tags` element of the `pactBroker` element of your provider. For example: ```xml <plugin> <groupId>au.com.dius</groupId> <artifactId>pact-jvm-provider-maven_2.11</artifactId> <version>3.3.8</version> <configuration> <serviceProviders> <serviceProvider> <name>provider1</name> <stateChangeUrl>http://localhost:8080/tasks/pactStateChange</stateChangeUrl> <pactBroker> <url>http://pactbroker:1234</url> <tags> <tag>TEST</tag> <tag>DEV</tag> </tags> </pactBroker> </serviceProvider> </serviceProviders> </configuration> </plugin> ``` This example will fetch and validate the pacts for the TEST and DEV tags. ## Filtering the interactions that are verified You can filter the interactions that are run using three properties: `pact.filter.consumers`, `pact.filter.description` and `pact.filter.providerState`. Adding `-Dpact.filter.consumers=consumer1,consumer2` to the command line or configuration section will only run the pact files for those consumers (consumer1 and consumer2). Adding `-Dpact.filter.description=a request for payment.*` will only run those interactions whose descriptions start with 'a request for payment'. `-Dpact.filter.providerState=.*payment` will match any interaction that has a provider state that ends with payment, and `-Dpact.filter.providerState=` will match any interaction that does not have a provider state. # Verifying a message provider [version 2.2.12+] The Maven plugin has been updated to allow invoking test methods that can return the message contents from a message producer. To use it, set the way to invoke the verification to `ANNOTATED_METHOD`. This will allow the pact verification task to scan for test methods that return the message contents. Add something like the following to your maven pom file: ```xml <plugin> <groupId>au.com.dius</groupId> <artifactId>pact-jvm-provider-maven_2.11</artifactId> <version>3.3.8</version> <configuration> <serviceProviders> <serviceProvider> <name>messageProvider</name> <verificationType>ANNOTATED_METHOD</verificationType> <!-- packagesToScan is optional, but leaving it out will result in the entire test classpath being scanned. Set it to the packages where your annotated test method can be found. --> <packagesToScan> <packageToScan>au.com.example.messageprovider.*</packageToScan> </packagesToScan> <consumers> <consumer> <name>consumer1</name> <pactFile>path/to/messageprovider-consumer1-pact.json</pactFile> </consumer> </consumers> </serviceProvider> </serviceProviders> </configuration> </plugin> ``` Now when the pact verify task is run, will look for methods annotated with `@PactVerifyProvider` in the test classpath that have a matching description to what is in the pact file. ```groovy class ConfirmationKafkaMessageBuilderTest { @PactVerifyProvider('an order confirmation message') String verifyMessageForOrder() { Order order = new Order() order.setId(10000004) order.setExchange('ASX') order.setSecurityCode('CBA') order.setPrice(BigDecimal.TEN) order.setUnits(15) order.setGst(new BigDecimal('15.0')) odrer.setFees(BigDecimal.TEN) def message = new ConfirmationKafkaMessageBuilder() .withOrder(order) .build() JsonOutput.toJson(message) } } ``` It will then validate that the returned contents matches the contents for the message in the pact file. ## Changing the class path that is scanned By default, the test classpath is scanned for annotated methods. You can override this by setting the `classpathElements` property: ```xml <plugin> <groupId>au.com.dius</groupId> <artifactId>pact-jvm-provider-maven_2.11</artifactId> <version>3.3.8</version> <configuration> <serviceProviders> <serviceProvider> <name>messageProvider</name> <verificationType>ANNOTATED_METHOD</verificationType> <consumers> <consumer> <name>consumer1</name> <pactFile>path/to/messageprovider-consumer1-pact.json</pactFile> </consumer> </consumers> </serviceProvider> </serviceProviders> <classpathElements> <classpathElement> build/classes/test </classpathElement> </classpathElements> </configuration> </plugin> ``` # Publishing pact files to a pact broker [version 3.2.0+] The pact maven plugin provides a `publish` mojo that can publish all pact files in a directory to a pact broker. To use it, you need to add a publish configuration to the POM that defines the directory where the pact files are and the URL to the pact broker. For example: ```xml <plugin> <groupId>au.com.dius</groupId> <artifactId>pact-jvm-provider-maven_2.11</artifactId> <version>3.3.8</version> <configuration> <pactDirectory>path/to/pact/files</pactDirectory> <!-- Defaults to ${project.basedir}/target/pacts --> <pactBrokerUrl>http://pactbroker:1234</pactBrokerUrl> <projectVersion>1.0.100</projectVersion> <!-- Defaults to 2.4.20 --> <trimSnapshot>true</trimSnapshot> <!-- Defaults to false --> </configuration> </plugin> ``` You can now execute `mvn pact:publish` to publish the pact files. _NOTE:_ The pact broker requires a version for all published pacts. The `publish` task will use the version of the project by default, but can be overwritten with the `projectVersion` property. Make sure you have set one otherwise the broker will reject the pact files. _NOTE_: By default, the pact broker has issues parsing `SNAPSHOT` versions. You can configure the publisher to automatically remove `-SNAPSHOT` from your version number by setting `trimSnapshot` to true. This setting does not modify non-snapshot versions. ## Publishing to an authenticated pact broker [version 3.3.9+] For an authenticated pact broker, you can pass in the credentials with the `pactBrokerUsername` and `pactBrokerPassword` properties. Currently it only supports basic authentication. For example: ```xml <plugin> <groupId>au.com.dius</groupId> <artifactId>pact-jvm-provider-maven_2.11</artifactId> <version>3.3.9</version> <configuration> <pactBrokerUrl>http://pactbroker:1234</pactBrokerUrl> <pactBrokerUsername>USERNAME</pactBrokerUsername> <pactBrokerPassword>PASSWORD</pactBrokerPassword> </configuration> </plugin> ```

Last Version: 2.4.20

Release Date:

SortPom Plugin

com.google.code.sortpom : maven-sortpom-plugin

A Maven plugin that sorts the pom.xml file.

Last Version: 2.3.1

Release Date:

Maven Archetype

org.apache.maven.archetype : maven-archetype

Maven Archetype is a set of tools to deal with archetypes, i.e. an abstract representation of a kind of project that can be instantiated into a concrete customized Maven project. An archetype knows which files will be part of the instantiated project and which properties to fill to properly customize the project.

Last Version: 3.2.1

Release Date:

Last Version: 0.1.0

Release Date:

Last Version: 1.0

Release Date:

weblab-archetype-configurable

org.ow2.weblab.tools.maven : weblab-archetype-configurable

The Archetype used to generate a stub for configurable. This should be called through the weblab-archetype-plugin and not directly.

Last Version: 1.0

Release Date:

Maven Commons

org.carlspring.maven : maven-commons

A library for common Maven operations.

Last Version: 1.6

Release Date:

Archiva Site

org.apache.maven.archiva : archiva-site

Archiva is an application for managing one or more remote repositories, including administration, artifact handling, browsing and searching.

Last Version: 1.0-beta-2

Release Date:

markdown-maven-plugin

de.jbellmann.maven.plugins : markdown-maven-plugin

Sonatype helps open source projects to set up Maven repositories on https://oss.sonatype.org/

Last Version: 0.9.1

Release Date:

buildbox-pom:1.0.5

net.sf.buildbox.maven : buildbox-pom

BuildBox is set of tools and plugins based on Maven 2, helping java developers with various build types and with the build process itself.

Last Version: 1.0.5

Release Date:

Last Version: 2.2.0

Release Date:

Maven XBean Plugin

org.jvnet.jax-ws-commons.spring : maven-xbean-plugin

XBean is a plugin based server architecture.

Last Version: 2.8-patched

Release Date:

Metouia Look And Feel

net.sf.squirrel-sql.thirdparty-non-maven : metouia

This project was once hosted on SourceForge (http://mlf.sourceforge.net), but SourceForge replaced it with a different project (not sure what the reason for removal was). It was licensed under an OSI-approved open source license according to the historical page hosted by the Internet Archive's wayback machine.

Last Version: 1.0.0-beta

Release Date:

Nexus Staging Maven Plugin

org.sonatype.plugins : nxrm3-staging-maven-plugin

Provides support to access staging functionality in a remote Nexus Professional server.

Last Version: 1.0.1

Release Date:

Last Version: 0.0.6

Release Date:

ConstGenerator

de.mhus.mvn.plugin : constgenerator-maven-plugin

A tool which generates constantes out of java classes.

Last Version: 3.6.2

Release Date:

Maven Mojo Archetype

org.apache.maven.archetypes : maven-archetype-mojo

An archetype which contains a sample a sample Maven plugin.

Last Version: 1.0

Release Date:

ServiceMix :: Maven2 Resource Plugin

org.apache.servicemix.tooling : res-maven-plugin

This pom provides project information that is common to all ServiceMix branches.

Last Version: 4.1

Release Date:

jsdoc3-maven-plugin

fr.mastah.maven.plugin : jsdoc3-maven-plugin

Used to generate JSDoc3 documentation of javascript files

Last Version: 1.0.13

Release Date:

launchify :: launchify-maven-plugin

br.com.ingenieux.launchify : launchify-maven-plugin

Launchify Helps Make Maven Projects Easier to Install as CLI Applications

Last Version: 0.0.1

Release Date:

Tools and plugins for Maven

org.arakhne.afc.maven : maven

Math, geometric, physic tools and other Java utilities.

Last Version: 17.0

Release Date:

Bck2Brwsr Maven Plugin

org.apidesign.bck2brwsr : bck2brwsr-maven-plugin

Java.net - The Source for Java Technology Collaboration

Last Version: 0.54

Release Date:

Docs Maven Skin

com.wandrell.maven.skins : docs-maven-skin

A Maven skin for using Maven Site as a documentation site

Last Version: 1.1.1

Release Date:

oss-maven

com.oberasoftware : oss-maven

Parent pom providing dependency and plugin management for applications built with Maven

Last Version: 2.4

Release Date:

web3j Maven Mojo

com.github.longdt : web3j-maven-plugin

Mojo's web3j Maven plugin is used to create java classes based on the solidity contract files.

Last Version: 4.8.10

Release Date:

query-export-maven-plugin

org.fugerit.java : query-export-maven-plugin

Tool export query in CSV (and in the furutre other) formats

Last Version: 0.3.2

Release Date:

Maven Archetype Parent

org.apache.maven.archetype : maven-archetype-parent

Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of information.

Last Version: 2

Release Date:

AAPBDTEST

com.aapbd.maventest : maventest

A wrapper for AAPBD LIRBARY

Last Version: 1.0.1

Release Date:

Last Version: 1.0.1

Release Date: