[ 
https://issues.apache.org/jira/browse/JSPWIKI-651?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13533411#comment-13533411
 ] 

Glen Mazza commented on JSPWIKI-651:
------------------------------------

The attached Maven pom can be placed in the JSPWiki home directory and the 
standard Maven commands "mvn clean", "mvn compile", and "mvn test-compile" 
(each one incorporating what the preceding command does) are now available.  
However, about 2/3rds of the test cases (called either via "mvn test" and "mvn 
package" which includes mvn test) are presently failing with this setup (632 
out of 964 are failing).  I had it down to just about 100 failures (mainly the 
web tests) yesterday but the latest API commits for some reason on my machine 
are causing JSPWiki to be unable to create org.apache.wiki.api.PluginManager 
(as done in WikiEngine, line 533)--despite heavy debugging I don't know what 
the problem is yet (the Ant tests still work though.) -- probably a classpath 
issue.

Also, by using mvn dependency:tree I was able to see which dependencies are 
transitive (brought in automatically by Maven without need for explicit 
declaration) and hence was able to remove about five dependencies in Maven 
pom.xml compared to what we need to have in the Ant file:

[INFO] ------------------------------------------------------------------------
[INFO] Building Apache JSPWiki (Incubating) 2.9.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-dependency-plugin:2.1:tree (default-cli) @ jspwiki ---
[INFO] org.apache.incubator:jspwiki:war:2.9.1-SNAPSHOT
[INFO] +- xmlrpc:xmlrpc:jar:2.0.1:compile
[INFO] +- org.apache.lucene:lucene-highlighter:jar:3.6.0:compile
[INFO] |  +- org.apache.lucene:lucene-core:jar:3.6.0:compile
[INFO] |  +- org.apache.lucene:lucene-memory:jar:3.6.0:compile
[INFO] |  \- org.apache.lucene:lucene-queries:jar:3.6.0:compile
[INFO] |     \- jakarta-regexp:jakarta-regexp:jar:1.4:compile
[INFO] +- javax.servlet:servlet-api:jar:2.4:compile
[INFO] +- net.sourceforge:sandler:jar:0.5:compile
[INFO] |  \- xpp3:xpp3:jar:1.1.3.4-RC3:compile
[INFO] +- opensymphony:oscache:jar:2.3:compile
[INFO] +- oro:oro:jar:2.0.7:compile
[INFO] +- javax.mail:mail:jar:1.4:compile
[INFO] |  \- javax.activation:activation:jar:1.1:compile
[INFO] +- log4j:log4j:jar:1.2.14:compile
[INFO] +- javax.servlet.jsp:jsp-api:jar:2.0:compile
[INFO] +- com.metaparadigm:json-rpc:jar:1.0:compile
[INFO] +- org.jvnet.hudson:org.suigeneris.jrcs.diff:jar:0.4.2:compile
[INFO] +- jdom:jdom:jar:1.0:compile
[INFO] +- javax.servlet:jstl:jar:1.1.2:compile
[INFO] +- org.freshcookies:freshcookies-security:jar:0.60:compile
[INFO] +- ecs:ecs:jar:1.4.2:compile
[INFO] +- commons-lang:commons-lang:jar:2.6:compile
[INFO] +- commons-fileupload:commons-fileupload:jar:1.2.1:compile
[INFO] +- net.sourceforge:akismet-java:jar:1.02:compile
[INFO] |  +- commons-codec:commons-codec:jar:1.3:compile
[INFO] |  \- commons-logging:commons-logging:jar:1.0.4:compile
[INFO] +- net.sourceforge.stripes:stripes:jar:1.5.7:compile
[INFO] +- commons-httpclient:commons-httpclient:jar:3.1:compile
[INFO] +- org.hsqldb:hsqldb:jar:1.8.0.10:test
[INFO] +- tomcat:jasper-runtime:jar:5.5.23:test
[INFO] |  \- commons-el:commons-el:jar:1.0:test
[INFO] +- org.eclipse.jetty.aggregate:jetty-all:jar:7.6.7.v20120910:test
[INFO] |  \- org.eclipse.jetty.orbit:javax.servlet:jar:2.5.0.v201103041518:test
[INFO] +- junit:junit:jar:3.8.2:test
[INFO] +- org.seleniumhq.selenium:selenium-java:jar:2.25.0:test
[INFO] |  +- org.seleniumhq.selenium:selenium-android-driver:jar:2.25.0:test
[INFO] |  |  \- org.seleniumhq.selenium:selenium-remote-driver:jar:2.25.0:test
[INFO] |  |     +- cglib:cglib-nodep:jar:2.1_3:test
[INFO] |  |     +- org.json:json:jar:20080701:test
[INFO] |  |     \- com.google.guava:guava:jar:12.0:test
[INFO] |  |        \- com.google.code.findbugs:jsr305:jar:1.3.9:test
[INFO] |  +- org.seleniumhq.selenium:selenium-chrome-driver:jar:2.25.0:test
[INFO] |  +- org.seleniumhq.selenium:selenium-htmlunit-driver:jar:2.25.0:test
[INFO] |  |  +- org.seleniumhq.selenium:selenium-api:jar:2.25.0:test
[INFO] |  |  +- net.sourceforge.htmlunit:htmlunit:jar:2.9:test
[INFO] |  |  |  +- commons-collections:commons-collections:jar:3.2.1:test
[INFO] |  |  |  +- org.apache.httpcomponents:httpmime:jar:4.1.2:test
[INFO] |  |  |  +- net.sourceforge.htmlunit:htmlunit-core-js:jar:2.9:test
[INFO] |  |  |  +- net.sourceforge.nekohtml:nekohtml:jar:1.9.15:test
[INFO] |  |  |  \- net.sourceforge.cssparser:cssparser:jar:0.9.5:test
[INFO] |  |  |     \- org.w3c.css:sac:jar:1.3:test
[INFO] |  |  \- org.apache.httpcomponents:httpclient:jar:4.1.2:test
[INFO] |  |     \- org.apache.httpcomponents:httpcore:jar:4.1.2:test
[INFO] |  +- org.seleniumhq.selenium:selenium-firefox-driver:jar:2.25.0:test
[INFO] |  |  +- commons-io:commons-io:jar:2.0.1:test
[INFO] |  |  \- org.apache.commons:commons-exec:jar:1.1:test
[INFO] |  +- org.seleniumhq.selenium:selenium-ie-driver:jar:2.25.0:test
[INFO] |  |  +- net.java.dev.jna:jna:jar:3.4.0:test
[INFO] |  |  \- net.java.dev.jna:platform:jar:3.4.0:test
[INFO] |  +- org.seleniumhq.selenium:selenium-iphone-driver:jar:2.25.0:test
[INFO] |  +- org.seleniumhq.selenium:selenium-safari-driver:jar:2.25.0:test
[INFO] |  +- org.seleniumhq.selenium:selenium-support:jar:2.25.0:test
[INFO] |  \- org.webbitserver:webbit:jar:0.4.6:test
[INFO] |     \- org.jboss.netty:netty:jar:3.2.7.Final:test
[INFO] \- jaxen:jaxen:jar:1.1-beta-6:test
[INFO]    +- dom4j:dom4j:jar:1.5.2:test
[INFO]    |  \- jaxme:jaxme-api:jar:0.3:test
[INFO]    +- xerces:xmlParserAPIs:jar:2.6.2:test
[INFO]    +- xerces:xercesImpl:jar:2.6.2:test
[INFO]    \- xom:xom:jar:1.0b3:test
[INFO]       +- com.ibm.icu:icu4j:jar:2.6.1:test
[INFO]       +- xalan:xalan:jar:2.6.0:test
[INFO]       |  \- xml-apis:xml-apis:jar:1.0.b2:test
[INFO]       \- org.ccil.cowan.tagsoup:tagsoup:jar:0.9.7:test
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

I also went through each of the dependencies, commenting them out and building 
to determine if any can be removed from our build.xml file (I didn't test such 
a compiled WAR, just did compilation) -- the following Maven is reporting as 
unnecessary or miscategorized in our build.xml:

Miscategorized:
<dependency><groupId>net.sourceforge.stripes</groupId><artifactId>stripes</artifactId><version>1.5.7</version></dependency>
 is listed as a "test" dependency in our build.xml but is actually a main 
dependency (used by regular source code).

Not needed: (at least for compilation and running of tests; would need to 
confirm with a WAR deployment):

        
<!--dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>1.4</version></dependency-->
        
<!--dependency><groupId>taglibs</groupId><artifactId>standard</artifactId><version>1.1.2</version></dependency-->
        
<!--dependency><groupId>jstl</groupId><artifactId>jstl</artifactId><version>1.1.2</version></dependency-->
        
<!--dependency><groupId>nekohtml</groupId><artifactId>nekohtml</artifactId><version>0.9.4</version></dependency-->

        
<!--dependency><groupId>org.dojotoolkit</groupId><artifactId>custom_rhino</artifactId><version>0.4.3</version><scope>test</scope></dependency-->
        
<!--dependency><groupId>tomcat</groupId><artifactId>jasper-compiler</artifactId><version>5.5.23</version><scope>test</scope></dependency-->
        
<!--dependency><groupId>xerces</groupId><artifactId>xercesImpl</artifactId><version>2.6.2</version><scope>test</scope></dependency-->
        
<!--dependency><groupId>xml-apis</groupId><artifactId>xml-apis</artifactId><version>1.0.b2</version><scope>test</scope></dependency-->
        
<!--dependency><groupId>com.yahoo.platform.yui</groupId><artifactId>yuicompressor</artifactId><version>2.4.7</version><scope>test</scope></dependency-->

If it is known already if any of these dependencies aren't being used it would 
be good to remove them from the Ant build.xml file.

Possible next steps (if we wish to continue here):
1.) Making the source more amenable to Mavenization: using the Standard 
Directory Layout 
(http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html)
 (e.g., the source classes to src/main/java, webapp stuff in src/main/webapp, 
resources in src/main/resources; test classes to src/test/java, test resources 
in src/test/resources) -- although it's simple in the pom to declare 
non-standard locations (already included).

Also, do less configuration of our property files (jspwiki.properties) in the 
build.xml for our test cases, instead have an already created 
jspwiki.properties configured w/necessary test values that can be called by 
either Ant or Maven as-is.

2.) Get the non-Web Test cases working (it's really mostly just that single 
PluginManager issue mentioned above that popped up above, that will fix about 
80% of the failures).

3.) Configure the commented-out Maven war plugin to create a WAR file that will 
work on Tomcat (not hard to do if the test cases are working, I can probably 
work on this).  Having a WAR facilitates the web tests.

4.) Separate the unit tests from the integration tests (add the -IT prefix to 
the latter, see the 2nd paragraph here: 
http://www.jroller.com/gmazza/entry/jersey_samples_on_cxf#jc2).  The 
integration tests are the web tests that rely on an already created WAR.  At 
this stage, all tests should be passing.

5.) Incorporate the Rat reporting and Cobertura stuff (CXF's pom can be copied 
from here:  
http://svn.apache.org/viewvc/cxf/trunk/pom.xml?view=co&content-type=text%2Fplain).

Anyway, we have a first step at least...

                
> Convert JSPWiki to a Maven project
> ----------------------------------
>
>                 Key: JSPWIKI-651
>                 URL: https://issues.apache.org/jira/browse/JSPWIKI-651
>             Project: JSPWiki
>          Issue Type: Improvement
>            Reporter: Daniel Johansson
>            Priority: Trivial
>              Labels: ant, build, ivy, maven
>         Attachments: pom.xml
>
>
> Hello there, I was hoping to maybe one day contribute to the JSPWiki project 
> and after having checked out the trunk code and played around somewhat I was 
> thinking it would be very nice if this project used Maven.
> I'm sure most of you are familiar with Maven in one way or another, you might 
> even have a really good reason for not doing this to JSPWiki.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to