Maven workarounds. The definitive guide. :-)

This commit is contained in:
Ben Alex 2004-12-22 00:16:20 +00:00
parent dc726ac75c
commit 5dfc3fdcfb
1 changed files with 117 additions and 9 deletions

View File

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