blob: ef85f4690ce1eb833ac41d65890817b62643be33 [file] [log] [blame]
Conventions
The following sections describe the conventions used within NMaven itself. This section is useful for developers wishing to
contribute to NMaven, as well as developers looking for a baseline for their own projects.
These conventions are evolving and subject to change as better ideas emerge: {{{mailto:nmaven-dev@incubator.apache.org} Got better ideas?}}
* Artifact ID - specified within the pom - is equivalent to the project's module name.
Project Structure:
+------+
|-- NMaven.Artifact
| `-- main
| `-- csharp
| `-- NMaven
| `-- Artifact
| `-- ArtifactContext.cs
| `-- Artifact.cs
`-- pom.xml
+------+
pom.xml file
+------+
<project xmlns="http://maven.apache.org/POM/4.0.0">
<modelVersion>4.0.0</modelVersion>
<groupId>NMaven.Artifact</groupId>
<artifactId>NMaven.Artifact</artifactId>
<packaging>library</packaging>
<version>0.14</version>
<name>NMaven.Artifact</name>
</project>
+------+
* If the module does not contain children modules, the Group ID is the same as the artifact ID.
* If a module contains children modules, the child module Group ID should either be equivalent to the parent module
Group ID or be a deriviative of the parent module Group ID.
* The directory structure of the source directory (typically src/main/csharp) will follow the same pattern as the group ID.
* If an assembly will only compile under a specific platform, those values should be specified within the compiler-config.
+------+
<project xmlns="http://maven.apache.org/POM/4.0.0">
<modelVersion>4.0.0</modelVersion>
<groupId>NMaven.Plugins</groupId>
<artifactId>NMaven.Plugins</artifactId>
<packaging>pom</packaging>
<version>0.14</version>
<name>NMaven.Plugins</name>
<build>
<sourceDirectory>src/main/csharp</sourceDirectory>
<testSourceDirectory>src/test/csharp</testSourceDirectory>
<plugins>
<plugin>
<groupId>org.apache.maven.dotnet.plugins</groupId>
<artifactId>maven-compile-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<vendor>MONO</vendor>
<frameworkVersion>2.0.50727</frameworkVersion>
<vendorVersion>1.2.3.1</vendorVersion>
</configuration>
</plugin>
</plugins>
</build>
</project>
+------+
* Use the default setup within the nmaven-settings.xml is to configure cross-platform builds.