Browse Source

Maven workarounds. The definitive guide. :-)

Ben Alex 20 years ago
parent
commit
5dfc3fdcfb
1 changed files with 117 additions and 9 deletions
  1. 117 9
      doc/xdocs/building.html

+ 117 - 9
doc/xdocs/building.html

@@ -28,20 +28,128 @@
 
 <body>
   <h1>Building Acegi Security System</h1>
-  <h2>Building from CVS </h2>
-  <p>This project uses <a href="http://maven.apache.org">Maven</a> as project manager and build tool. You only need to</p>
+  <h2>Checking Out from CVS </h2>
+  <p>This project uses <a href="http://maven.apache.org">Maven</a> as project manager
+	and build tool.	We recommend you to install Maven 1.0.2 or greater before trying
+	the following. <b>Note there are workarounds at the bottom of this page.</b></p>
+  <p>To checkout Acegi Security from CVS, execute the following command on a
+	single line:</p>
   <ol>
-    <li>Install maven (at least 1.0).</li>
-    <li>Run the following instruction on a single line to get latest sources from cvs HEAD </li>
-        <pre>maven scm:checkout-project
+    <pre>maven scm:checkout-project
     -Dmaven.scm.method=cvs
     -Dmaven.scm.cvs.module=acegisecurity
     -Dmaven.scm.cvs.root=:pserver:anonymous@cvs.sourceforge.net:/cvsroot/acegisecurity
     -Dmaven.scm.checkout.dir=acegisecurity</pre>
-    
-    <li>Run maven in any module directory, or <kbd>maven multiproject:artifact</kbd> in the root folder if you want to build all modules.</li>
   </ol>
-  <h2>Building the site</h2>
-  <p>Run <kbd>maven clean multiproject:clean multiproject:site -Dmaven.test.failure.ignore=true</kbd> to build a clean copy of the site.</p>
+      
+  <h2>Quick Build</h2>
+  <p>Often people reading this document just want to see if Acegi Security will work 
+	for their projects. They want to deploy a sample application, and that's about it
+	(after all, all the reference documentation can be read online at
+	<a href="http://acegisecurity.sourceforge.net">http://acegisecurity.sourceforge.net</a>).
+	In this case, execute:</p>
+  <ol>
+	<pre>cd $ACEGI_SECURITY/core</pre>
+	<pre>maven jar:install</pre>
+	<pre>cd $ACEGI_SECURITY/samples/contacts</pre>
+	<pre>maven war</pre>
+	<pre>copy $ACEGI_SECURITY/samples/contacts/target/acegi-security-sample-contacts-filter.war $YOUR_CONTAINER/webapps</pre>
+  </ol>
+  <p>Then load up your web container and visit
+	<a href="http://localhost:8080/acegi-security-sample-contacts-filter/">http://localhost:8080/acegi-security-sample-contacts-filter/</a>
+	(or whatever location is appropriate for your web container).</p>
+
+  <h2>Building All JARs</h2>
+  <p>Sometimes people are already using Acegi Security, and they just want to build the
+	latest code from CVS. To build all artifacts (JARs) and install them into
+	your local Maven repository, simple execute:</p>
+  <ol>
+	<pre>cd $ACEGI_SECURITY/</pre>
+	<pre>maven multiproject:install</pre>
+  </ol>
+  <p>You can then check your <code>$HOME/.maven/repository/acegisecurity</code>
+	directory and it should contain all of the latest Acegi Security JARs.</p>
+  
+  <h2>Building The Site</h2>
+  <p>By "site" we mean the web site you can browse at 
+	<a href="http://acegisecurity.sourceforge.net">http://acegisecurity.sourceforge.net</a>,
+	which includes the reference documentation and all of the Maven reports.
+	If you'd like a local copy, simply execute:
+  <ol>
+	<pre>cd $ACEGI_SECURITY/doc</pre>
+	<pre>maven    multiproject:clean multiproject:site
+	-Dmaven.jar.override=on 
+	-Dmaven.jar.clover-ant=1.3.3_01 
+	-Dmaven.scm.cvs.root=:pserver:anonymous@cvs.sourceforge.net:/cvsroot/acegisecurity
+</pre>
+  </ol>
+  <p>If you're an Acegi Security developer, you can omit the
+	<code>maven.scm.cvs.root</code> property, as your SourceForge login will be used
+	along with CVS-over-SSH (see workaround discussion below if you have problems).</p>
+
+  <h2>Memory and Clover Workarounds</h2>
+  <p>If you get an <code>OutOfMemoryError</code>, simply execute the following before
+	calling Maven:</p>
+	<ol>
+		<pre>set MAVEN_OPTS=-Xmx512m</pre>
+	</ol>
+  <p>If you get an <code>[ERROR] Invalid license: Invalid license file [E1202]</code>,
+	this is because the <code>maven-clover-plugin</code> is using an old version of
+	<code>clover-ant-xxx.jar</code>. Whilst Acegi Security's <code>project.properties</code>
+	specifies a newer version, subprojects have an inheritence problem and don't pick
+	this up (as of the time of writing). To workaround this issue, you need to
+	specify those override properties on the command line. For example, to execute the
+	Clover reports for the core subproject, you would do the following:</p>
+  <ol>
+	<pre>cd $ACEGI_SECURITY/core</pre>
+	<pre>maven clover:html-report -Dmaven.jar.override=on -Dmaven.jar.clover-ant=1.3.3_01</pre>
+  </ol>
+
+  <h2>CVS-over-SSH Workarounds</h2>
+
+  <p>Another possible problem is related to CVS-over-SSH ("ext" in CVSROOT) appearing to freeze.
+	The following instructions assume you're an Acegi Security developer who has CVS access
+	to the project, as if you're not then you shouldn't be trying to use CVS-over-SSH
+	(the instructions above detail how to execute the "site" and "checkout" commands
+	anonymously via "pserver").</p>
+	
+  <p>First check your
+	<code>$ACEGI_SECURITY/build.properties</code> contains a
+	<code>maven.username</code> equal to your SourceForge username. If your Maven CVS
+	commands still don't work, test you have automatic CVS-over-SSH access operational
+	by executing the following command:</p>
+  <ol>
+	<pre>cvs -d :ext:YOUR_SOURCEFORGE_USERNAME@cvs.sourceforge.net:/cvsroot/acegisecurity</pre>
+  </ol>
+  
+  <p>If this CVS command doesn't work (without requiring any interaction such as password
+	entry), you probably need to review your CVS setup.
+	This will vary depending on your CVS client.</p>
+	
+  <p>One Windows-based command line CVS-over-SSH-with-auto-login combination that 
+	works very well is to install 
+	<a href="http://www.cvsnt.com/">CVSNT</a> (which has a CVS client console utility)
+	and 
+	<a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/">PuTTY</a> (download
+	<code>putty.zip</code>) together, and use
+	PuTTY's Pageant to automatically authenticate. A resource that describes in detail
+	how to configure WinCVS (which internally uses CVSNT's command line client) with PuTTY 
+	(including automatic SSH authentication) is 
+	<a href="http://sourceforge.net/docman/display_doc.php?docid=766&group_id=1">SourceForge's instructions</a>.
+	One issue with the SourceForge instructions is they forget to mention how to
+	tell the CVS command-line client to use <code>plink.exe</code>, which is PuTTY's SSH command-line
+	version. The solution is to execute 
+	<code>set CVS_RSH=C:\Program Files\putty\plinkk.exe</code>
+	(or whatever path is appropriate to plink) before running the CVS command line.
+	In fairness, the SourceForge instructions target the Windows front-end to CVS, whilst
+	we need the command-line version to work.</p>
+	
+  <p>If your CVS is working, try the <code>maven-changelog-plugin</code> on its
+	own by executing the following command:</p>
+  <ol>
+	<pre>cd $ACEGI_SECURITY/</pre>
+	<pre>maven maven-changelog-plugin:report</pre>
+  </ol>
+	
 </body>
 </html>