mvn license:format
Packaging Your Connector for Release
DevKit is compatible only with Studio 6 and Mule 3. To build Mule 4 connectors, see the Mule SDK documentation. |
When your connector is ready for release to a broad audience, take the following additional steps to ensure user success:
-
Create a license agreement for your connector.
-
See the advantages of building your connector with DevKit 3.9 and packaging two sets of connector logo-icons to support the old and new Studio UI.
-
Develop end-to-end walkthroughs to illustrate performing common use cases with your connector.
-
Create a compressed file for distribution using Maven.
Prerequisites
This document assumes you have:
-
Developed your connector
-
Documented the connector in preparation for release. Additional information about documenting your connector is provided in the next section.
-
Completed testing as described in Developing DevKit Connector Tests.
Documenting Use Cases Before Packaging
Before packaging and releasing your connector, we recommend you document your connector effectively. Useful documentation can help reduce your support and training costs, as well as improving customer satisfaction.
Documentation tips:
-
Readme - Provide a Readme file that customers can readily access. The best Readme file appears automatically during installation, such as part of an installation wizard. The Readme needs to contain installation information and explain any required software that customers need to install or configure first before they can install your connector.
-
Use Cases: Explain why, when, and how a customer uses your connector. For each use case, provide examples with explanations.
-
Release Notes: Ensure your connector is versioned and that you help customers understand what changes between releases. We recommend that you list new features, known issues, and what issues were fixed.
-
APIDoc: Generate Connector Reference Documentation that leverages Javadoc, running a simple Maven command run from your connector’s root folder.
Applying a License Agreement and Header
Before you package the connector you can customize the contents of the license agreement to reflect your terms and the wording you want for your connector license. When a user of your packaged connector installs it in Studio, the user is presented with the license agreement.
Maven first searches for a LICENSE.md
file in the same directory as the pom.xml
file during the build process.
If this file is not found, Maven goes through the following steps to locate a license agreement:
-
Maven checks for a
LICENSE.txt
file in the same directory as thepom.xml
file. -
If the
pom.xml
file contains a Licenses section (as described in the Maven documentation), the DevKit attempts to download the text from the license’s URL, then saves the downloaded content as a newLICENSE.md
file. -
If no license text is found by the above steps, the build fails.
In addition to the global license file, the DevKit requires that your source files also contains a license header. To apply the license header to every source file in your project, run the following command in a command console at the root of your project, which contains your connector project’s pom.xml
file:
This command goes through your whole project and applies the license header defined in the LICENSE_HEADER.txt
file to each source file. This includes Java files, SQL scripts, XML files, and more.
Installing Connector Into Local Maven Repo
Run the following command to install your connector with your updated license information into your local Maven repository.
Run mvn license:format before running this Maven install command because Maven verifies the license headers first before installing:
|
mvn clean install
To enable verbose logging, use:
|
Packaging Connector using Maven
You can use the following Maven command to package the connector to get it ready for installation anywhere. This creates an "update site" in a .zip
file that you can use to install the connector in Anypoint Studio. manually. This update site contains everything you need to use the connector inside your Mule applications (icons for the palette, XSDs, source files, etc.) Therefore it is important that your source files have the license headers before packaging.
Note: Packaging the connector does not check for license headers in your source files. To package your connector, run the following command at the root folder:
mvn clean package
Find the packaged connector in the connector’s /target
folder to install and make the connector available in Studio.
Optional - Certifying and Publishing Your Connector
MuleSoft’s program certifies and publishes third party connectors to be distributed through Anypoint Exchange. For more information about this program, please move on to Connector Certification Program Guidelines.
Optional - Uploading your Connector to Exchange
If your connector has been certified by MuleSoft, you can publish your connector on the publicly available Anypoint Exchange, and make it accessible from Exchange for download into Anypoint Studio. To publish your connector, use the Maven Facade described in To Publish and Deploy Exchange Assets Using Maven. Publishing a connector requires obtaining the organization ID for the organization or business group where the connector is available in Exchange.
Optional - Changing the Studio Category of your Module
If your extension does not truly qualify as a connector, that is, it should be understand as an extension belonging to a different category in Anypoint Studio, add the @Category
annotation to the connector class, specifying one of the categories available in Studio. You cannot define your own category.
Here is how the annotation is added in the xyz-Connector.java
file:
@Connector(name = "myext", schemaVersion = "3.4", friendlyName="mine", minMuleVersion="3.5", description="An extension that allows you to extend xyz and perform every xyz operation")
@Category(name = "org.mule.tooling.category.core", description = "Components")
public class MyExtension
{
...
Other available categories must be defined using one of the following:
import org.mule.api.annotations.Category;
// Endpoint
@Category(name = "org.mule.tooling.category.endpoints", description = "Endpoints")
// Scope
@Category(name = "org.mule.tooling.category.scopes", description = "Scopes")
// Component
@Category(name = "org.mule.tooling.category.core", description = "Components")
// Transformer
@Category(name = "org.mule.tooling.category.transformers", description = "Transformers")
// Filters
@Category(name = "org.mule.tooling.category.filters", description = "Filters")
// Flow Control
@Category(name = "org.mule.tooling.category.flowControl", description = "Flow Control")
// Error Handling
@Category(name = "org.mule.tooling.ui.modules.core.exceptions", description = "Error Handling")
// Cloud Connectors
@Category(name = "org.mule.tooling.category.cloudconnector", description = "Cloud Connectors")
// Miscellaneous
@Category(name = "org.mule.tooling.ui.modules.core.miscellaneous", description = "Miscellaneous")
// Security
@Category(name = "org.mule.tooling.category.security", description = "Security")