This is an automated email from the ASF dual-hosted git repository. ggregory pushed a commit to annotated tag japicmp-base-0.0.1 in repository https://gitbox.apache.org/repos/asf/commons-vfs.git
commit 846a43525864fa8a273fb06f12a06f4be1db0f99 Author: mmois <martin.m...@googlemail.com> AuthorDate: Sun Sep 29 22:53:53 2013 +0200 Updated pom.xml and README.md --- README.md | 39 ++++++++++++++++- japicmp/pom.xml | 131 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 168 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index eede782..06631f7 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,41 @@ japicmp ======= -Comparison of two versions of a jar archive +japicmp is a tool to compare two versions of a jar archive: + + java -jar japicmp-0.0.1-SNAPSHOT.jar -n new-version.jar -o old-version.jar + +It can also be used as a library to integration its functionality in some other kind of software: + + List<JApiClass> jApiClasses = jarArchiveComparator.compare(oldArchive, newArchive); + +##Motivation## + +Every time you make a new release of a library or a product you have to tell your clients or customers what +has changed in comparison to the last release. Without the appropriate tooling, this task is tedious and error-prone. +This tool/library helps you to determine the differences between the java class files that are contained in the two +jar archives. +In contrast to other libraries/tools, this library does not use the Java Reflection API to compute +the differences, as the usage of the Reflection API makes it necessary to include all classes the jar archive under +investigation depends on are available on the classpath. To prevent the inclusion of all dependent libraries, which +can be a lot of work for bigger applications, this library makes use of the [javassist](http://www.csg.ci.i.u-tokyo.ac.jp/~chiba/javassist/) +library to inspect the class files. This way you only have to provide the two jar archives on the command line, that's it. + +##Usage## + +The tool has a set of CLI parameters that are described in the following: + + -h Prints this help. + -o <pathToOldVersionJar> Provides the path to the old version of the jar. + -n <pathToNewVersionJar> Provides the path to the new version of the jar. + -x <pathToXmlOutputFile> Provides the path to the xml output file. If not given, stdout is used. + -m Outputs only modified classes/methods. If not given, all classes and methods are printed. + +##Downloads## + +The latest development version can be downloaded here: [0.0.1-SNAPSHOT](http://repository-siom79.forge.cloudbees.com/snapshot/japicmp/japicmp/0.0.1-SNAPSHOT/japicmp-0.0.1-20130929.203701-1.jar) + +##Development## + +* [Jenkins build server](https://siom79.ci.cloudbees.com/job/japicmp) [](https://siom79.ci.cloudbees.com/job/japicmp) +* [Maven snapshot repository](https://repository-siom79.forge.cloudbees.com/snapshot) \ No newline at end of file diff --git a/japicmp/pom.xml b/japicmp/pom.xml index f26ebbf..dba6508 100644 --- a/japicmp/pom.xml +++ b/japicmp/pom.xml @@ -11,6 +11,12 @@ <artifactId>japicmp</artifactId> + <properties> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + <github.account>siom79</github.account> + <cloudbees.account>siom79</cloudbees.account> + </properties> + <dependencies> <dependency> <groupId>javassist</groupId> @@ -50,7 +56,130 @@ </execution> </executions> </plugin> + <plugin> + <artifactId>maven-assembly-plugin</artifactId> + <configuration> + <archive> + <manifest> + <mainClass>japicmp.JApiCmp</mainClass> + </manifest> + </archive> + <descriptorRefs> + <descriptorRef>jar-with-dependencies</descriptorRef> + </descriptorRefs> + <finalName>${project.artifactId}-${project.version}</finalName> + <appendAssemblyId>false</appendAssemblyId> + </configuration> + <executions> + <execution> + <id>make-assembly</id> + <phase>package</phase> + <goals> + <goal>single</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + <version>3.1</version> + <configuration> + <source>1.5</source> + <target>1.5</target> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-release-plugin</artifactId> + <version>2.4.1</version> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-javadoc-plugin</artifactId> + <version>2.9.1</version> + <executions> + <execution> + <id>attach-javadocs</id> + <goals> + <goal>jar</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-source-plugin</artifactId> + <version>2.2.1</version> + <executions> + <execution> + <id>attach-sources</id> + <goals> + <goal>jar-no-fork</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <!-- explicitly define maven-deploy-plugin after other to force exec order --> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-deploy-plugin</artifactId> + <version>2.7</version> + <executions> + <execution> + <id>deploy</id> + <phase>deploy</phase> + <goals> + <goal>deploy</goal> + </goals> + </execution> + </executions> + </plugin> </plugins> + <extensions> + <extension> + <groupId>org.apache.maven.wagon</groupId> + <artifactId>wagon-webdav-jackrabbit</artifactId> + <version>1.0-beta-7</version> + </extension> + </extensions> </build> - + <scm> + <connection>scm:git:git://github.com/${github.account}/${project.groupId}.git</connection> + <developerConnection>scm:git:g...@github.com:${github.account}/${project.groupId}.git</developerConnection> + <url>http://github.com/${github.account}/${project.groupId}/tree/master/</url> + <tag>HEAD</tag> + </scm> + <distributionManagement> + <repository> + <id>cloudbees-public-release</id> + <url>dav:https://repository-${cloudbees.account}.forge.cloudbees.com/release</url> + </repository> + <snapshotRepository> + <id>cloudbees-public-snapshot</id> + <url>dav:https://repository-${cloudbees.account}.forge.cloudbees.com/snapshot</url> + </snapshotRepository> + </distributionManagement> + <repositories> + <repository> + <id>cloudbees-public-snapshot</id> + <url>https://repository-${cloudbees.account}.forge.cloudbees.com/public-snapshot</url> + <releases> + <enabled>false</enabled> + </releases> + <snapshots> + <enabled>true</enabled> + </snapshots> + </repository> + <repository> + <id>cloudbees-public-release</id> + <url>https://repository-${cloudbees.account}.forge.cloudbees.com/public-release</url> + <releases> + <enabled>true</enabled> + </releases> + <snapshots> + <enabled>false</enabled> + </snapshots> + </repository> + </repositories> </project> \ No newline at end of file