[NAS-8] Switch to Maven as build tool Created: 01/Sep/10  Updated: 26/Jun/14  Resolved: 26/Jun/14

Status: Resolved
Project: NetarchiveSuite
Component/s: Build managment
Affects Version/s: None
Fix Version/s: 5.0-Milestone1, Improvements

Type: Improvement Priority: Major
Reporter: Mikis Seth Sørensen (Inactive) Assignee: Mikis Seth Sørensen (Inactive)
Resolution: Fixed  
Labels: None
Σ Remaining Estimate: 40h Remaining Estimate: 20h
Σ Time Spent: 20h Time Spent: Not Specified
Σ Original Estimate: 60h Original Estimate: 20h

Issue Links:
Dependency
depends NAS-6 Create Maven Proof-of-concept build Resolved
Sub-Tasks:
Key
Summary
Type
Status
Assignee
NAS-31 Test NetarchiveSuite with Maven Sub-task Resolved Mikis Seth Sørensen  
NAS-32 Create NetarchiveSuite distributables... Sub-task Resolved Nicholas Clarke  
NAS-2304 Maven file encoding should explicitly... Sub-task Closed Nicholas Clarke  
NAS-2310 Update build documentation to reflect... Sub-task Resolved Mikis Seth Sørensen  
NAS-2311 Reorganize existing files into separa... Sub-task Resolved Thorbjørn Ravn Andersen  
Organization:
General
Inspector: Søren Vejrup Carlsen Søren Vejrup Carlsen (Inactive)
Sprint: 5.0 Milestone1
Verification:
  • Build a NetarchiveSuite release package. Validate that:
    • The ZIP contains the expected content.
    • Deploy the system to the test environment and before a sanity test (TEST1).
    • The relevant functionality of the ANT based secondary targets are available in the Maven build.

 Description   

We could gain a number of benefits from switching to Maven as the NAS build platform. This includes:

  • Separation of current proto-modules into well-defined subprojects.
  • Explicit dependency management.
  • Reference build replacing the sperately maintained Ant, Eclipse and IntelliJ build definitions.
  • Better QA reports replacing the current Maven1 functionality by use SBForge Sonar for code reports.
  • Standard Maven jar and war packaging.
  • Standard Maven source, test jar and javadoc distribution.
  • Automatic license management.


 Comments   
Comment by Thorbjørn Ravn Andersen (Inactive) [ 12/May/14 ]

Depends on what you use it for. As an Eclipse user I found that Eclipse can display Javadoc attached to Java source, and as newer Maven Projects always include Javadoc I very rarely use a dedicated web site.

However, there is a very valid reason for doing so if you have configuration (like a Dependency Injection glue class) where you want to expose that as a web page.

Depends on the use case.

Comment by Mikis Seth Sørensen (Inactive) [ 12/May/14 ]

To have a website with the javadoc accessible.

NAS traditional has a web site with javadoc.

Actually I'm not sure this is important. Is it?

Comment by Thorbjørn Ravn Andersen (Inactive) [ 09/May/14 ]

Out of curiosity - why? The Maven build process attach the javadoc to the sources automatically already.

Comment by Mikis Seth Sørensen (Inactive) [ 09/May/14 ]

We should also consider using the

        <groupId>com.github.github</groupId>
        <artifactId>site-maven-plugin</artifactId>

plugin to deploy the Maven site, the only important thing being the javadoc.

Comment by Mikis Seth Sørensen (Inactive) [ 05/May/14 ]

Or we can do as we do now in the current NAS Maven build, and deploy the Maven1 jars to the SBForge.org Nexus, and refere to the transitive H1 dependencies directly in the pom.

This is hopefully all a temporary measure until we move on to H3, which is a native Maven project.

Comment by Thorbjørn Ravn Andersen (Inactive) [ 30/Apr/14 ]

Most of the jars included in the "ant releasezipball" zip are present in Maven Central. Notably heritrix 1 with snapshot dependencies are not (and our locally modified wayback 1.8), so a decision has to be made on how to handle that. Either we can create a heritrix 1 artifact with dependencies and push to Maven Central, or we can have a maven project carrying the jars inside our git repository and have a set of install actions responsible for deploying the jars into your personal repository. The action taken depends on how long we want to stay in a Maven build using Heritrix 1.

Comment by Thorbjørn Ravn Andersen (Inactive) [ 30/Apr/14 ]

Gradle has in my opinion not yet reached critical mass, and I do not see anything in the current ant build that cannot relatively easily be done with plain Maven (after reorganizing the source a bit to conform with the "one project; one artifact" mentality of Maven). Hence, I think that the tooling support of plain Maven in IDE's and Jenkins and others, outweighs all the disadvantages which would compel you to use something else. What we have is - all in all - a relatively simple multi-war, multi-jar source tree, which Maven is fine for.

Comment by Mikis Seth Sørensen (Inactive) [ 08/Apr/14 ]

Vi should consider switched directly to Gradle, which might be considered a successor to Maven (at least seen from my hope for the future).

Generated at Wed May 01 23:54:27 CEST 2024 using Jira 9.4.15#940015-sha1:bdaa9cbecfb6791ea579749728cab771f0dfe90b.