Hi, > I'm not a Maven expert, so please provide your feedback about those ideas.
I am picking up some sections from http://languagetool.wikidot.com/switching-to-maven: > To build all of LT in one go, we should have one "LanguageTool" Maven module > that includes all the other LT modules and which itself has no code (a > so-called multimodule project). That is a good approach. Do not get confused by the fact that Maven modules are sub-directories of such a multi-module project while in Eclipse, there is no such thing as a project in a sub-directory. The Maven m2e plugin handles that nicely. If you try to mimick the Eclipse way by putting the multimodule project as a directory parallel to the modules, you'll run into all kinds of problems with various Maven plugins including the release plugin (see below). Use a hierarchical arrangement like: - trunk - pom.xml - languagetool-core - pom.xml - ... - languagetool-en - pom.xml - ... - ... In Eclipse, you'll get one project for the top-level project and one for each module and all will appear at the same level in the project explorer. IntelliJ supports hierarchical structures in its project explorer. I don't know about NetBeans or other IDEs. > As the Maven language modules (languagetool-en) depend on languagetool-core, > but languagetool-core needs to initialize the language-specific classes, this > needs to happen at runtime to avoid a circular dependency. Thus > languagetool-core needs to scan, at runtime, the classpath for classes in > org.languagetool.language which extend the Language class. Instead of scanning for subclasses, I'd suggest to define some location in META-INF where language modules can declare themselves. E.g. a file META-INF/org/languagetool/language-module.properties with a key/value like "languageClass=org.languagetool.language.en.English". > The build process now also builds artifacts for Maven central which have to > be uploaded. This means more work for the developer doing the release. (It > doesn't have to happen at the same time as the end-user release, although > that would be nice) A release of a multi-module Maven project can be very simple, just run a "mvn release:prepare; mvn release:perform" on the top-level project. You should consider though, if you want all modules to have one version or if every module should be versioned separately. If you use one version for all, the release is simple and users always know which modules are supposed to work with each other - however - you may at times release a new version of modules that didn't actually change since the last release. Some people therefore prefer to version everything separately. I'd suggest you start with on version for all until you got used to Maven and may later consider switching to a per-module versioning scheme. To get an idea about the steps involved in releasing a multi-module project with a single-version scheme to Maven Central with the Maven release plugin, check out this http://code.google.com/p/uimafit/wiki/CreatingARelease As long as you stick to the single-version scheme, the effort is the same, no matter how many modules you have. > Should we use less modules, i.e. put languagetool-standalone, > languagetool-office-extension, languagetool-gui-core into one module? This > would then be one module which produces several artifacts (advice against > this). Do not worry about having many modules. It is definitely worth it. You can do a fine-grained dependency management and possible fine-grained versioning if you want that at some point. > How to build the JNLP stuff (webstart) with Maven? I never used it, but here's a plugin that seems to be actively maintained (last update 2012-02-06): http://mojo.codehaus.org/webstart/webstart-maven-plugin/ > How to build the OXT with Maven? If you have an ant-based solution for that, you might just use that using the Maven ant-run plugin. Otherwise, it may possibly be configure the Maven assembly plugin to do what you need. I don't know anything about OXT, I'm afraid. There seems to have been some activity towards an OXT Maven Plugin, but it seems to be dead: https://github.com/oboehm/maven-ooo-plugin-it/ Cheers, -- Richard ------------------------------------------------------------------------------ Everyone hates slow websites. So do we. Make your web apps faster with AppDynamics Download AppDynamics Lite for free today: http://ad.doubleclick.net/clk;258768047;13503038;j? http://info.appdynamics.com/FreeJavaPerformanceDownload.html _______________________________________________ Languagetool-devel mailing list Languagetool-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/languagetool-devel