pmd / Pmd Eclipse Plugin
Programming Languages
PMD Eclipse Plugin
Release Notes: https://github.com/pmd/pmd-eclipse-plugin/blob/master/ReleaseNotes.md
Eclipse Update Site:
- Releases: https://pmd.github.io/pmd-eclipse-plugin-p2-site/
- Snapshots: https://pmd.github.io/pmd-eclipse-plugin-p2-site/snapshot/
How to contribute
You can contribute by testing the latest version, creating bug reports, or even forking the repository on github and create pull requests. Any contributions are welcome!
Testing the latest version
Simply build the plugin locally using maven:
./mvnw clean verify
You'll find the zipped update site in the folder net.sourceforge.pmd.eclipse.p2updatesite/target/
. Point eclipse to the zip file in this folder as an update-site and install the
latest SNAPSHOT version.
Bug Reports
Please file any bug reports in the bug tracker at github:
https://github.com/pmd/pmd-eclipse-plugin/issues
GitHub Repository
Just fork the the GitHub Repository pmd/pmd-eclipse-plugin and create a pull request.
https://github.com/pmd/pmd-eclipse-plugin/
To get started, see also the next section.
Short Developer's Guide
Compilation
Simply run ./mvn clean verify
. The plugin's update site will be generated in
net.sourceforge.pmd.eclipse.p2updatesite/target/repository
. You can use this directory as
an update site to install the new plugin version directly into your Eclipse.
Importing the projects in Eclipse
Make sure you have the Maven Integration (m2e - http://eclipse.org/m2e/) installed. Then you can import Existing Maven Projects. You should see 6 projects:
- net.sourceforge.pmd.eclipse - that's the feature
- net.sourceforge.pmd.eclipse.p2updatesite - generates the update site
- net.sourceforge.pmd.eclipse.parent - the parent pom project
- net.sourceforge.pmd.eclipse.plugin - the actual plugin code
- net.sourceforge.pmd.eclipse.plugin.test - the (unit) tests for the plugin
- net.sourceforge.pmd.eclipse.plugin.test.fragment - an example extension of the plugin used during the tests
Debugging
You can run eclipse with debugging enabled and connect to it via remote debugging:
eclipse -data workspace-directory -vmargs -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8000
Releasing and updating the official eclipse update site
The update site is hosted on github as a Github Pages site of the repository https://github.com/pmd/pmd-eclipse-plugin-p2-site/.
The release script running on Github Actions will automatically update the repository pmd-eclipse-plugin-p2-site and add the new release, update the repository metadata (compositeContent.xml and compositeArtifacts.xml as well as index.md) and push the changes.
The release happens in two phases:
- Update the repository locally to prepare the new version:
- Update the changelog
- Update the versions
- Create a tag
- Update the changelog for the next version
- Update the versions
- Push the changes and the tag. The Github Actions build will then publish the new version on update site and github releases
Script
# Pick a release BUILDQUALIFIER (e.g. v20170401-0001) and update versions
# E.g. version is: "4.0.13" and BUILDQUALIFIER is "v20170401-0001".
# The complete version of the plugin will be "4.0.13.v20170401-0001
export BUILDQUALIFIER=$(date -u +v%Y%m%d-%H%M) && echo $BUILDQUALIFIER
# Pick the version of the new release and the next development version
export VERSION=4.0.18
export NEXT=4.0.19
echo Update the ReleaseNotes with the release date and version:
echo
echo "## $(date -u +%d-%B-%Y): $VERSION.$BUILDQUALIFIER"
echo
echo
echo "Press enter to continue..."
read
./mvnw -Dtycho.mode=maven org.eclipse.tycho:tycho-versions-plugin:1.7.0:set-version -DnewVersion=$VERSION.$BUILDQUALIFIER
git commit -a -m "Prepare release pmd-eclipse-plugin $VERSION.$BUILDQUALIFIER"
git tag $VERSION.$BUILDQUALIFIER
echo "Create (temporary) release branch"
git branch pmd-eclipse-plugin-rb-$VERSION
echo
echo Update the ReleaseNotes and add a next version entry:
echo "## ????: $NEXT.v????"
echo
echo
echo Press enter...
read
echo "Updating version in master to next"
./mvnw -Dtycho.mode=maven org.eclipse.tycho:tycho-versions-plugin:1.7.0:set-version -DnewVersion=$NEXT-SNAPSHOT
git commit -a -m "Prepare next pmd-eclipse-plugin development version $NEXT-SNAPSHOT"
echo Checkout the release branch and build the plugin
git checkout pmd-eclipse-plugin-rb-$VERSION
./mvnw clean verify
echo
echo "Please test now!!!"
echo
echo "Update-site: jar:file:$(pwd)/net.sourceforge.pmd.eclipse.p2updatesite/target/net.sourceforge.pmd.eclipse.p2updatesite-$VERSION.$BUILDQUALIFIER.zip!/"
echo
read
echo
echo "Publishing now..."
git checkout master
git branch -D pmd-eclipse-plugin-rb-$VERSION
git push origin master
git push origin tag $VERSION.$BUILDQUALIFIER
echo
echo
echo
echo Update the marketplace entry with the new version:
echo https://marketplace.eclipse.org/content/pmd-eclipse-plugin
echo
echo Done.
Also, don't forget to create a News and verify, that the zipped update site has been uploaded to GitHub Releases.
You can use the following template:
PMD for Eclipse $VERSION.$BUILDQUALIFIER released
A new PMD for Eclipse plugin version has been released.
It is available via the update site: <https://pmd.github.io/pmd-eclipse-plugin-p2-site/>
* Release Notes: <https://github.com/pmd/pmd-eclipse-plugin/blob/$VERSION.$BUILDQUALIFIER/ReleaseNotes.md>
Updating the used PMD version
The parent pom contains the property pmd.version
. This is used inside the plugin module, to resolve the dependencies.
In order to change the PMD version, change this property and rebuild (mvn clean package
). In case PMD has some
changed (added/removed) transitive dependencies, you'll need to update n.s.p.e.plugin/META-INF/MANIEFEST.MF
as well.
All transitive dependencies are copied into the folder n.s.p.e.plugin/target/lib
during the build.
Useful References
- http://wiki.eclipse.org/Equinox/p2/Publisher
- http://wiki.eclipse.org/Equinox_p2_Repository_Mirroring
- http://wiki.eclipse.org/Category:Tycho
- http://wiki.eclipse.org/Tycho/Additional_Tools
- http://codeiseasy.wordpress.com/2012/07/26/managing-a-p2-release-repository-with-tycho/
- http://wiki.eclipse.org/Tycho/Demo_Projects
- http://wiki.eclipse.org/Tycho/Reference_Card
- http://eclipse.org/tycho/sitedocs/index.html
- https://docs.sonatype.org/display/M2ECLIPSE/Staging+and+releasing+new+M2Eclipse+release
- http://wiki.eclipse.org/Tycho/Packaging_Types
- http://wiki.eclipse.org/Tycho/Reproducible_Version_Qualifiers
- http://www.vogella.com/articles/EclipseTycho/article.html
- http://git.eclipse.org/c/tycho/org.eclipse.tycho-demo.git/tree/itp01/tycho.demo.itp01.tests/pom.xml
- http://www.sonatype.com/people/2008/11/building-eclipse-plugins-with-maven-tycho/
- http://zeroturnaround.com/labs/building-eclipse-plug-ins-with-maven-3-and-tycho/
- https://github.com/open-archetypes/tycho-eclipse-plugin-archetype
- http://wiki.eclipse.org/Tycho/How_Tos/Dependency_on_pom-first_artifacts