There was a bug which proved itself in more complicated rules with nested conditions.
If you were the ones who it gave a headache to, here's a gift for you
Enjoy!
A great new feature is comming in Windup 2.6.0.
In real life scenarios, if a company has multiple .ear applications, it's very likely that they will bundle various subcomponents, for instence, EJB jars with EJB's used across the company.
In Windup 2.4.0, we added the ability to analyze multiple applications. But that didn't count with the fact stated above. That lead to these re-used submodules being counted multiple times in the migration effort and total incidents sums, which doesn't reflect the real amount of effort - once the submodule is done, it's done for all applications.
So since Windup 2.6.0, this behavior is corrected. If Windup spots some libraries which are used multple times, it will create a "virtual" application in the report, called "<shared-libs>" and 1) report it only once, 2) analyze it only once (the other copies of the same jar won't be re-scanned).
Kudos to Jess for implementing this!
Enjoy
I've recorded a short video about what's Windup.
What's Windup in 6 minutes - Windup 2.5 brief intro - YouTube
If you like it, please share with whoever might be interested.
Actually it's a cover of Brad Davis' original video for Windup 0.x, so kudos to him for a nice script.
Here's what I used to create the JBoss AS 6 matrix:
And this is what it creates:
Could be reworked for EAP 7+ as well, if there's nothing better yet....
After Google code was discontinued, I am pulling my project out of there as needed. Hopefully I'll get all of them before they shut it down for good.
This one is already deleted, so I had to find it in an old SVN repo at one of of old drives.
MavenHoe turns a directory into a Maven repository.
Here's how it works:
QA dept often needs to run a maven project with "faked" dependencies - the actual .jar files must be taken from a product's distribution, which are not in any Maven repository (like EAP's .zip or RPM distribution).
This utility is one of the ways to solve this problem. It scans a given directory for .jar files, indexes them, and opens a server acting as a Maven repository, in the sense of serving the indexed .jar files.
Which file will be served is determined by match of strings in the provided Maven URL path (localhost:17283/<group>/<artifact>/<version>/<filename>.jar). This algorithm is a matter of future improvement. Using static mapping file is a possibility.
Optionally disable the central repository if you shouldn't need it - i.e. all your dependencies should be in the directories indexed by Mavenhoe.
See http://community.jboss.org/thread/89912 . One (IMO the best) option is to override it in pom.xml:
<repository>
<id>central</id>
<url>http://some.url</url>
<snapshots><enabled>false</enabled></snapshots>
<releases><enabled>false</enabled></releases>
</repository>
Add Mavenhoe repository to your pom.xml:
<repository>
<id>mavenhoe-repo</id>
<url>http://localhost:17283/jars?mvnPath=</url>
</repository>
Alternatively, you can also add the repo to ~/.m2/settings.xml (or any path and use `mvn -s settings-local.xml`):
<?xml version="1.0" encoding="UTF-8"?>
<settings>
<localRepository>/home/ondra/work/hbn/runner/EAP-5.1/work-space/m2repo</localRepository>
<profiles>
<!-- Mavenhoe fake repository -->
<profile>
<id>mavenhoe-repo</id>
<activation><activeByDefault>true</activeByDefault></activation>
<repositories>
<repository>
<id>mavenhoe</id>
<url>http://localhost:17283/jars?mvnPath=</url>
</repository>
</repositories>
</profile>
</profiles>
</settings>
Mapping file tells Mavenhoe which file should be served for certain G:A:C:V axes.
You can provide multiple mapping files, using parameter -map <path/map.txt>
An example of such file is the extracted-metadata.txt.zip attached to https://docspace.corp.redhat.com/docs/DOC-53554 :
# Format:
# <real-file-name> <groupId> <artifactId> [@<cls>] <version> <virtual-file-name>
jboss-managed.jar org/jboss/man/ jboss-managed 2.1.0.SP1 jboss-managed-2.1.0.SP1.jar
getopt.jar gnu-getopt/ getopt 1.0.12-brew getopt-1.0.12-brew.jar
jboss-kernel.jar org/jboss/microcontainer/ jboss-kernel 2.0.6.GA jboss-kernel-2.0.6.GA.jar
jboss-logging-spi.jar org/jboss/logging/ jboss-logging-spi 2.1.0.GA jboss-logging-spi-2.1.0.GA.jar...
The first column is path to a file which should be served (base dir is the current) to Maven client.
Further columns are: groupId (with either slashes or dots), artifactId, [@classifier,] version, artifact file name, respectively.
Classifier can be optionally specified at fourth column, prepended with @ (shifting all remaining columns).
For JBoss products, these information info will be acquired from an online database (see https://docspace.corp.redhat.com/docs/DOC-52060#Versions_database ).
Command Format (hopefully the syntax is clear ):
mavenhoe [-sp] ( -map [-fakepoms] <map.txt> | -i [-fakepoms] <dir> | -ipom <dir> )+
Header 1 | Header 2 |
---|---|
-i [-fakepom] <path/to/dir> | Indexes .jar files in this dir tree. G:A:V used: 1) META-INF/pom.xml if present. 2) filename : filename : MANIFEST.MF's Implementation-Version. |
-ipom <path/to/dir> | As with -i, only searches for pom.xml files. |
-map [-fakepom] <path/map.txt> | Mapping file to be used by FileBasedMapper. |
-sp | Strip paths from the 1st column in all map files. (applies to all -map's). |
-fakepom | Applied to next dir tree; Mavenhoe will serve fake .pom files with no dependencies. G:A:C:V used are as described above. |
Will list all indexed jars.
Will list FileBasedMapper's maps.
Shuts the server down.
HTTP code | Meaning |
---|---|
200 | Requested artifact was found, and is server in the response body. See the DEBUG log messages for details. |
400 | Wrong G:A:V path - not in a format <groupId>/<artifactId>/<version>/<filename>.<packaging> . |
403 | Payment required - send donation to author's PayPal .-) |
404 | Requested artifact was not found. See DEBUG logs what was searched. |
409 | FileBasedMapper found a match in a mapping file, but the referenced artifact file does not exist (nothing to serve). |
500 | Internal exception - bug in the app. |
http://localhost:17283/jars?mvnPath=org/jboss/whatever/whatever/5.1.0.GA/whatever-5.1.0.GA.jar
- Should give 404
- Should let you download the hibernate-core-3.3.2.GA_CP03.jar
To ensure that your dependencies are not downloaded from local Maven repository, wipe them out:
mvn build-helper:remove-project-artifact
To use trully "local" repository solely for one project, set it to be in a directory.
This can be done by using modified settings.xml.
cp ~/.m2/settings.xml ./settings-local.xml
sed "s|<localRepository>\(.*\)</localRepository>|<localRepository>local_repo</localRepository>|" -i settings-local.xml
mvn -s settings-local.xml ...
2010-12-10 00:38:25,692 DEBUG org.jboss.qa.mavenhoe.mappers.OrMapper Looking for: jdom : jdom : 1.0 : jdom-1.0.jar
2010-12-10 00:38:25,693 DEBUG org.jboss.qa.mavenhoe.mappers.FileBasedMapper Looking for: jdom : jdom : 1.0 : jdom-1.0.jar
2010-12-10 00:38:25,693 DEBUG org.jboss.qa.mavenhoe.mappers.FileBasedMapper Thus for: 'jdom:jdom'
2010-12-10 00:38:25,693 DEBUG org.jboss.qa.mavenhoe.mappers.FileBasedMapper Supposed file name: null
2010-12-10 00:38:25,693 DEBUG org.jboss.qa.mavenhoe.mappers.ArtifactIdMapper Looking for: jdom : jdom : 1.0 : jar = jdom-1.0.jar
2010-12-10 00:38:25,693 DEBUG org.jboss.qa.mavenhoe.mappers.ArtifactIdMapper Supposed file name: jdom
2010-12-10 00:38:25,693 DEBUG org.jboss.qa.mavenhoe.MavenHoeAppFound: JarInfo{ name: jdom, version: 5.1.0 (build: SVNTag=JBPAPP_5_1_0 date=201009150028),
group: null,
path: eap/jboss-eap-5.1/jboss-as/server/production/deploy/admin-console.war/WEB-INF/lib/jdom.jar,
base: eap }
Windup 2.5.0 was released!
Download here.
Note that this is behind a download counter; if you have issues downloading it, ask me for a direct link.
New features are listed below.
This release is primarily a bug-fix release, and also you'll experience a significant preformance improvement.
The documentation is still in preparation, will be available once we officially post about this Windup release at the windup-users mailing list.
Enjoy
WINDUP-540 Report improvements suggestions from the UX team