Author: sisbell Date: Thu Feb 7 11:41:33 2008 New Revision: 619598 URL: http://svn.apache.org/viewvc?rev=619598&view=rev Log: Updated readme
Modified: incubator/nmaven/trunk/README.txt Modified: incubator/nmaven/trunk/README.txt URL: http://svn.apache.org/viewvc/incubator/nmaven/trunk/README.txt?rev=619598&r1=619597&r2=619598&view=diff ============================================================================== --- incubator/nmaven/trunk/README.txt (original) +++ incubator/nmaven/trunk/README.txt Thu Feb 7 11:41:33 2008 @@ -1,5 +1,294 @@ Disclaimer: Apache NMaven is undergoing incubation at the ASF. -Prerequisites -* csc.exe must be available on your PATH. Usually it can be found in C:\WINDOWS\Microsoft.NET\Framework\[version] +Getting Started + +* {Building NMaven} + +** Prerequisites + + Prior to building NMaven, make sure that you have the following installed on your system: + + [[1]] {{{ http://java.sun.com/javase/downloads/index_jdk5.jsp} JDK 5.0 Update x}} + + [[2]] For Microsoft builds you will need both {{{http://msdn2.microsoft.com/en-us/downloads/default.aspx} Microsoft .NET Framework}} (1.1+) + AND {{{http://msdn2.microsoft.com/en-us/downloads/default.aspx} NET Framework SDK}}. For Mono builds, you will need + {{{http://www.mono-project.com} Mono}} (tested with 1.2.3.1+). + + [[3]] Subversion client 1.3+. Click here for + {{{ http://subversion.tigris.org/servlets/ProjectDocumentView?documentID=35379&showInfo=true} Windows Subversion Client}}. + + [[4]] {{{http://maven.apache.org/download.html} Maven 2.0.7+}} + +[] + + Optional programs: + + [[1]] {{{http://nunit.org/index.php?p=download} NUnit 2.4.x+}} (Currently only supported building with Microsoft) + +** Paths + + You will need to make sure that you have both the SDK and the .NET framework locations within your path. + On Linux distributions, this should already be in your path. Typical locations for Microsoft include: + + * install root: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 + + * SDK root: C:\Program Files\Microsoft.NET\SDK\v2.0\ + + [] + + On Windows, Mono looks something like: + + * install root/SDK path: C:\Program Files\Mono-1.2.3.1\bin + + [] + + If you are using NUnit, add the NUnit bin to your path. + +** Build + + To build NMaven: + + [[1]] Do an SVN checkout + ++----+ + svn co https://svn.apache.org/repos/asf/incubator/nmaven/trunk nmaven ++----+ + + [[2]] Run + ++----+ + mvn install ++----+ + + To run with integration tests: + ++----+ + mvn install -P run-its ++----+ + +** Linux Specific Setup + + Building on Linux, may take some extra steps. By default, on many Linux environments, the GNU Compiler for Java is already + installed. The current GNU version may not work with NMaven, which requires JDK 1.5. To check which version the system uses, type "java -version" + on the command line. If you see something similar to the following, you will need to take additional steps to get the + build setup: + ++----+ + +java version "1.4.2" +gij (GNU libgcj) version 4.1.1 20060525 (Red Hat 4.1.1-1) ++----+ + + Create a file "/etc/profile.d/java.sh" with the following entries: + ++----+ + + export JAVA_HOME=/usr/java/jdk1.5.0_09 + export PATH=$JAVA_HOME/bin:$PATH ++----+ + + Type "mvn -version" from the command line. You should see the following: + ++----+ + +java version "1.5.0_09" +Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_09-b01) +Java HotSpot(TM) Client VM (build 1.5.0_09-b01, mixed mode, sharing) ++----+ + + You can try to build with the default version of Mono installed. If it doesn't work, + type "mono -V" on the command line to see what version you are running. If it is below 1.2.3.1, then download the + latest mono version, unzip and run rpm from the commandline. Detailed instructions are located here: + {{{ http://www.mono-project.com/Getting_Mono}Installing Mono}}. Make sure to su to root before installing with these + instructions! + +* {Signing Assemblies} + + To create a key + ++----+ + sn -k sgKey.snk ++----+ + + NMaven supports compile-time signing of assemblies. You can sign assemblies by using the keyfile field in the + maven-dotnet-compiler-plugin. + ++----+ + <build> + <sourceDirectory>.</sourceDirectory> + <plugins> + <plugin> + <groupId>org.apache.maven.dotnet.plugins</groupId> + <artifactId>maven-dotnet-compiler-plugin</artifactId> + <extensions>true</extensions> + <configuration> + <keyfile>sgKey.snk/keyfile> + </configuration> + </plugin> + </plugins> + </build> ++----+ + + Key signing is currently only supported for .NET framework 2.0. + +* {Assembly Info} + + Provided that you do not have your own AssemblyInfo class in your project, NMaven will automatically generate + an AssemblyInfo.* for you. It does the following mapping: + +*-------------------------+--------------------------------------------+ +| AssemblyDescription | $\{project.description\} | +*-------------------------+--------------------------------------------+ +| AssemblyVersion | $\{project.version\} | +*-------------------------+--------------------------------------------+ +| AssemblyTitle | $\{project.name\} | +*-------------------------+--------------------------------------------+ +| AssemblyCompany | $\{project.organization.name\} | +*-------------------------+--------------------------------------------+ +| AssemblyProduct | $\{project.organization.name\}-$\{project.name\} | +*-------------------------+--------------------------------------------+ +| AssemblyCopyright | place a COPYRIGHT.txt file in your module directory and NMaven will pick it up and put it in the assembly | +*-------------------------+--------------------------------------------+ + + Since the pom version is mapped to the assembly manifest, you MUST follow the 0.0.0.0 version convention or the build + will fail. You may, however, optionally add additional tags after the 0.0.0.0 version, such as -SNAPSHOT, alpha, etc. + Valid versions would include 1.3.4 or 1.2-SNAPSHOT or 1.2-RC1. + +* {Compiling Projects} + + NMaven supports compiling of exe, winexe, library, and netmodule projects. + +*-------------------------+--------------------------------------------+ +| <<Target Type>> | <<Packaging>> | +*-------------------------+--------------------------------------------+ +| exe | dotnet:exe | +*-------------------------+--------------------------------------------+ +| winexe | dotnet:winexe | +*-------------------------+--------------------------------------------+ +| library | dotnet:library | +*-------------------------+--------------------------------------------+ +| netmodule | dotnet:module | +*-------------------------+--------------------------------------------+ + + For example, the pom for compiling a library would look like: + ++----+ +<?xml version="1.0" encoding="UTF-8"?> + +<project> + <modelVersion>4.0.0</modelVersion> + <groupId>NMaven.Its</groupId> + <artifactId>NMaven.It.It0000</artifactId> + <packaging>dotnet:library</packaging> + <version>1.0.0</version> + <name>NMaven.It.It0000</name> + <build> + <sourceDirectory>.</sourceDirectory> + <testSourceDirectory>Test</testSourceDirectory> + <plugins> + <plugin> + <groupId>org.apache.maven.dotnet.plugins</groupId> + <artifactId>maven-dotnet-compiler-plugin</artifactId> + <extensions>true</extensions> + </plugin> + </plugins> + </build> +</project> ++----+ + + If you are using Mono on Windows, then set the vendor tag. If you are compiling on a non-Windows platform, then you do not need to set the + tag. + ++----+ +<plugins> + <plugin> + <groupId>org.apache.maven.dotnet.plugins</groupId> + <artifactId>maven-dotnet-compiler-plugin</artifactId> + <extensions>true</extensions> + <configuration> + <vendor>NOVELL</vendor> + </configuration> + </plugin> +</plugins> ++----+ + +* {Project Dependencies} + + To use a gac dependency, you will need to set a GAC_ROOT environment variable to point to either the Microsoft or Mono + GAC root location. Then use the system scope as shown below. You can also use types: dotnet:gac_32 and dotnet:gac. + ++----+ +<dependency> + <groupId>System.Windows.Forms</groupId> + <artifactId>System.Windows.Forms</artifactId> + <version>2.0.0.0</version> + <type>dotnet:gac_msil</type> + <scope>system</scope> + <classifier>b77a5c561934e089</classifier> + <systemPath> + ${env.GAC_ROOT}\GAC_MSIL\System.Windows.Forms\2.0.0.0__b77a5c561934e089\System.Windows.Forms.dll + </systemPath> +</dependency> ++----+ + + A typical dependency would look like. + ++----+ + <dependencies> + <dependency> + <groupId>NMaven.Its</groupId> + <artifactId>NMaven.It.It0004</artifactId> + <version>1.0.0</version> + <type>dotnet:library</type> + </dependency> + </dependencies> ++----+ + + dotnet:winexe and dotnet:exe can also be used as dependency types. dotnet:module can also be used but will not be transitive. + +* {NUnit} + + NUnit is currently only supported building with Microsoft, not Mono. To use, add the following dependency to the pom. + ++----+ +<dependency> + <groupId>org.apache.maven.dotnet</groupId> + <artifactId>NUnit.Framework</artifactId> + <version>2.4.6-incubating-SNAPSHOT</version> + <type>dotnet:library</type> + <scope>test</scope> +</dependency> ++----+ + + And also set the test source directory to where your test classes are located. + ++----+ + <build> + <sourceDirectory>.</sourceDirectory> + <testSourceDirectory>Test</testSourceDirectory> +... + </build> ++----+ + +* {Archetypes} + + To create a library project: + ++----+ +mvn archetype:create -DarchetypeGroupId=org.apache.maven.dotnet.csharp / + -DarchetypeArtifactId=maven-archetype-class-library / + -DarchetypeVersion=0.15-incubating-SNAPSHOT / + -DgroupId=<<groupId>> / + -DartifactId=<<artifactId>> ++----+ + + The archetypeArtifactId can be specified as any of the following: + + [[1]] maven-archetype-class-library + + [[2]] maven-archetype-console-application + + [[3]] maven-archetype-windows-application + + [[4]] maven-archetype-windows-control \ No newline at end of file