Skip navigation

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


WINDUP-1057 Composite conditions (not, and, or) need to pass the nam… by OndraZizka · Pull Request #943 · windup/windup…



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!



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:

GitHub - OndraZizka/jboss-as-component-matrix-xslt: Creates a component matrix CSV for JBoss Application Server.

And this is what it creates:

Component Matrix History

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:


Mavenhoe – fake Maven repository from .jar's in local directory tree


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.




Maven project  preparation


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 . One (IMO the best) option is to override it in pom.xml:




Add  Mavenhoe repository to your pom.xml:



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"?>


    <!-- Mavenhoe fake repository -->


Mapping  file

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 attached to :


# 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 ).



Command line options

Command  Format (hopefully the syntax is clear ):


mavenhoe [-sp] ( -map [-fakepoms] <map.txt> | -i [-fakepoms] <dir> | -ipom <dir> )+


Header  1Header  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.
-spStrip paths from the 1st column in all map files. (applies  to all -map's).

Applied to next dir tree; Mavenhoe will serve fake .pom files with no dependencies.

G:A:C:V used are as described above.



Meta  URLs



            Will list all indexed jars.



            Will list FileBasedMapper's maps.



            Shuts the server down.

Artifact URLs


HTTP codeMeaning


Requested  artifact was found, and is server in the response body. See the DEBUG  log messages for details.
400Wrong  G:A:V path - not in a format <groupId>/<artifactId>/<version>/<filename>.<packaging> .
403Payment required - send  donation to author's PayPal .-)
404Requested  artifact was not found. See DEBUG logs what was searched.
409FileBasedMapper  found a match in a mapping file, but the referenced artifact file does  not exist (nothing to serve).
500Internal  exception - bug in the app.




-  Should give 404



-  Should let you download the hibernate-core-3.3.2.GA_CP03.jar



Build  process tips


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 ...


Sample  log output


2010-12-10 00:38:25,692 DEBUG  Looking for: jdom : jdom : 1.0 : jdom-1.0.jar
2010-12-10 00:38:25,693 DEBUG  Looking for: jdom : jdom : 1.0 : jdom-1.0.jar
2010-12-10 00:38:25,693 DEBUG    Thus  for: 'jdom:jdom'
2010-12-10 00:38:25,693 DEBUG    Supposed file name: null
2010-12-10 00:38:25,693 DEBUG  Looking for: jdom : jdom : 1.0 : jar = jdom-1.0.jar
2010-12-10 00:38:25,693 DEBUG    Supposed file name: jdom
2010-12-10 00:38:25,693 DEBUG

  Found: 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.





  • WINDUP-974 Javaclass condition should allow to search for Annotation property
  • WINDUP-893 Create new quickstart to present using windup embedded in maven project
  • WINDUP-885 Upgrade windup-maven-plugin to latest WindUp core version
  • WINDUP-821 Replace the pie chart with a bar chart
  • WINDUP-820 Tree view of files in the Application report
  • WINDUP-717 Add a "--discoverPackages" parameter to simply list the packages in an application
  • WINDUP-666 Add support for query on XML files by dtd namespace
  • WINDUP-665 A tree structurization of known tags
  • WINDUP-593 Report all unparsable XML file issues in one report
  • WINDUP-466 Allow windup-migrate-app to analyse libraries (JAR)
  • WINDUP-134 Support scanning multiple applications/servers in one run

Bug fixes

  • WINDUP-1018 NullPointer when attempting to list targets
  • WINDUP-1013 charts overlap with archive description table on app details
  • WINDUP-1006 wrong URL to jquery-ui.css and missing its images
  • WINDUP-999 NPE on xsl:include
  • WINDUP-992 org.jboss-only archive always ignored, even if --packages org.jboss is specified
  • WINDUP-982 Maven coords of identified archives are not shown in reports
  • WINDUP-973 incomprehensible NPE when a XML rule is wrong
  • WINDUP-972 DiscoverJPAAnnotationsRuleProvider_JPAEntityBeanRule rule throws java.lang.NullPointerException
  • WINDUP-968 Broken sorting when the detail of an issue are displayed
  • WINDUP-967 Wrong sorting order in the migration issues report
  • WINDUP-966 The links in rules are not working
  • WINDUP-965 Windup will suggest loading CR versions of rules even if the installed version is a .Final version
  • WINDUP-960 Introduce a "potential" severity // Potential issues incidents on Report Index is incorrect
  • WINDUP-956 Inherited types are not extracted in cases where the binding is not available
  • WINDUP-952 Spring bean report is missing multi-application support
  • WINDUP-950 migration issues template error
  • WINDUP-937 The link to additional resources on the Migration Issues Report page doesn't work
  • WINDUP-930 Invalid source or target technologies are not reported to the user
  • WINDUP-925 Improve the performance of the migration-issues page on large pages
  • WINDUP-919 Wrong enum in one of the rules causes all of the rules to fail
  • WINDUP-913 Application Details Report: Collapse/Expand All links are not refreshed while toggling on some panels
  • WINDUP-912 migration-issues page: Links associated with a migration issue hint (or classification) are not being rendered
  • WINDUP-910 Rework report_index to put less information on each "row"
  • WINDUP-909 Replace level of effort description with the verbose versions
  • WINDUP-902 Report Index should use "incidents" in all places instead of "findings" or "issues"
  • WINDUP-899 Technology tags appear in a random order
  • WINDUP-894 Windup Distribution: Maven bom and submodule structure issues
  • WINDUP-892 Migration Issues Report: Column with string title for Level of Effort should be connected to the value
  • WINDUP-891 Migration Issues Report: Mandatory type issues should be first in the table
  • WINDUP-890 Report Index: graph bars are hovered while cursor points on them
  • WINDUP-887 Refactor XmlFile
  • WINDUP-883 Top menu bar hides page title when window narrowed
  • WINDUP-881 FreeMarker template error on an ejb-jar.xml that doesn't contain
  • WINDUP-879 Top nav obscures the page heading if the browser window is too small
  • WINDUP-877 doesn't deal with spaces in WINDUP_HOME properly
  • WINDUP-872 Multiple Applications: File Source report leaked combine links to all XSL transformations
  • WINDUP-871 Report description is not shown for Application List and Migration Issues Reports
  • WINDUP-867 Application Report Needs Memory of Expansion
  • WINDUP-866 Data Source Provider not Resolving All Session Factory Types
  • WINDUP-863 Adjust Static IP Address to Be More Targetted
  • WINDUP-861 Source Report Inline Hint CSS
  • WINDUP-858 Migration Issues report should be updated to match the style from Tobias
  • WINDUP-857 It is difficult to tell the difference between the global migration issues report (covering all apps) and the one for each app
  • WINDUP-856 Technology tag colors have a meaning, but this is not described to the user
  • WINDUP-855 Hover help is missing on the application list page and the migration issues page
  • WINDUP-854 Invalid value of the --target option doesn't cause an error
  • WINDUP-853 The --discoverPackages output seems wrong
  • WINDUP-844 Add readme.txt into distribution with usefull information about Windup
  • WINDUP-841 License should only generate a tech tag and not a classification
  • WINDUP-840 The first column (issue name) in the Migration Issues Report is not sortable
  • WINDUP-839 Send feedback links at the bottom of the application list and the top of the application overview page are broken
  • WINDUP-838 Clear up report names (overview vs application list)
  • WINDUP-834 Can't install an addon when I don't specify a version (ClassCastException)
  • WINDUP-828 The GreetingListener is never used
  • WINDUP-827 The --updateDistribution option is not recognized
  • WINDUP-824 Catchall report should be different than Application overview
  • WINDUP-823 Regression in java freemarker template
  • WINDUP-817 Update furnace version
  • WINDUP-815 Generated class(es) are on both Migration Issues and Compatible reports
  • WINDUP-809 Bootstrap doesn't process arguments properly
  • WINDUP-808 Improve static IP matching - remove matches with version and revision on same line
  • WINDUP-806 Windup Overview page doesn't show caught java files
  • WINDUP-793 "Duplicate" entries in Compatible report for both .class and .java
  • WINDUP-772 Non xml files are trying to be parsed
  • WINDUP-754 Repeated identical hint titles in the report overview
  • WINDUP-732 When scanning multiple applications placed in one folder, windup breaks
  • WINDUP-710 Create XSD for ruletest xml tests
  • WINDUP-703 ExportCSV is using too much memory


  • WINDUP-996 Switch FramedElement Element cache to a SoftReference for improved memory handling in low memory situations
  • WINDUP-979 Use @RuleMetadata instead of MetadataBuilder and toStringPerform
  • WINDUP-978 Convenience: ...Model m = GraphContext#create(Class<...Model> type);
  • WINDUP-969 Application Details Report: Project tree: EAR names repeated in subnodes
  • WINDUP-958 Windup Rules Test harness should take target Technology for testing rules.
  • WINDUP-935 "Requires Architectural Change" too long, squeezes the chart
  • WINDUP-934 Maven plugin quickstart: Add an example of running against app archive.
  • WINDUP-932 Maven plugin: Get rid of the Forge and Furnace version specification by the user.
  • WINDUP-926 Add favicon to reports
  • WINDUP-924 Change the contents of the incident count cell on the application_list to use mandatory vs optional
  • WINDUP-922 Make the package patterns work with .* suffix
  • WINDUP-918 Ruleset XSD: Reflect the enumerated attributes.
  • WINDUP-911 Slim down Windup-rulesets artifact
  • WINDUP-905 Rework the layout of the migration issues page
  • WINDUP-904 On the report index, the text inside the boxes does not line up perfectly with the page heading
  • WINDUP-903 Move hover help to an always visible box at the top of the page
  • WINDUP-901 The two report boxes at the top of the report_index are together with no spacing in between
  • WINDUP-900 The application list should display effort categories
  • WINDUP-896 Potential Issues Report: when no issues are caught there is empty space after heading panel
  • WINDUP-895 Migration Issues report: Hint text should be moved to more logical place
  • WINDUP-864 Panels are Inconsistent Styling on Application Report
  • WINDUP-859 Proposed changes to topnav
  • WINDUP-850 Responsive design in reports is broken if you change browser window size
  • WINDUP-849 Application name for multiple application list is not enough intuitive
  • WINDUP-848 Enhance Windup help usage for --packages option
  • WINDUP-847 Source and Target options are not clear how to use them
  • WINDUP-846 Windup bootstrap runs slow even for showing help usage
  • WINDUP-845 Update windup startup script to not show warnings for java 8 runtime
  • WINDUP-842 Remove breadcrumb trail
  • WINDUP-836 Remove 3D style for tag labels
  • WINDUP-835 Create an index/table of content as the default
  • WINDUP-829 Add expand all/collapse all option in Overview reportr
  • WINDUP-825 Make Tattletale and Compatible files report optional
  • WINDUP-822 Overview page should list projects with collapsable div
  • WINDUP-803 Note the number of occurences of hints in a file on the Migration Issues Report
  • WINDUP-795 Skip Tattletale's generation of the .png file
  • WINDUP-790 Top nav should indicate which report you are on
  • WINDUP-785 Need to add signature for VisualAge Generator to the generated files singature list
  • WINDUP-771 Reports should be usable/accessible when off-line
  • WINDUP-744 Migration Issue Report should group same category issues
  • WINDUP-720 Consider renaming  to
  • WINDUP-691 JSF/HTML templates migration is not shown in reports
  • WINDUP-686 Windup Should Automatically Cleanup Graph & Archive Directories
  • WINDUP-604 Read JMS Pool Configurations from Vendor Specific EJB
  • WINDUP-540 Report improvements suggestions from the UX team

Filter Blog

By date:
By tag: