Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 29 Current »

The following directory structures should be supported by NMaven

1. Multi-module Projects

Multi-module project with a parent pom containing one or more modules, then a subdirectory for each module, which equates to a VS "project". The .sln file sits beside the parent pom, and each subdirectory contains a .csproj, pom.xml and source code. Source code is not typically put in a subdirectory under the module, but it might be. NUnit test code may be within each module in a directory named "Tests", or it may be in a separate module.

C:\PROJECTS\MYSOLUTION
│   MySolution.sln
│   pom.xml
│
├───MyClassLibrary
│   │   Class1.cs
│   │   Class2.cs
│   │   Class3.cs
│   │   Class4.cs
│   │   MyClassLibrary.csproj
│   │   pom.xml
│   │
│   └───Properties
│           AssemblyInfo.cs
│
├───MyClassLibraryTest
│   │   MyAppTest.cs
│   │   MyClassLibraryTest.csproj
│   │   pom.xml
│   │
│   └───Properties
│           AssemblyInfo.cs
│
└───MyConsoleApplication
    │   MyConsoleApplication.csproj
    │   pom.xml
    │   Program.cs
    │
    └───Properties
            AssemblyInfo.cs

2. Flat Single Module Project

Flat structure with pom.xml, .sln, .csproj and source code all in the same directory. Source code is not typically put in a subdirectory under the module, but it might be. If present, NUnit test code should be in a directory named "Tests", which is not packaged in the main artifact. See note below about "nested" projects. The "flat" structure is only supported as a single project with no sub-modules, for projects of type 'library' (dll) and 'exe'.

C:\PROJECTS\FLATSINGLEMODULE
│   Class1.cs
│   FlatSingleModule.csproj
│   FlatSingleModule.sln
│   pom.xml
│
└───Properties
        AssemblyInfo.cs

3. Visual Studio Web Site Project

Visual Studio "Web Site" (File -> New -> Web Site) project with .sln file copied into the project directory and modified to normalize paths. NMaven will build a zip file containing the aspx files and compiled dlls (in a bin/ directory). Note: There is an issue with building this type of project twice in a row: you must 'clean' before building again.

C:\PROJECTS\WEBSITE2
│   Default.aspx
│   Default.aspx.cs
│   WebSite2.sln
│   pom.xml
│
└───App_Data

4. Visual Studio ASP.NET Web Application

Visual Studio "ASP.NET Web Application" (File -> New -> Project, "ASP.NET Web Application"). Structure is similar to (1) with a parent pom and .sln file at the top, plus a subdirectory for each project/module. NMaven should build a .zip file as in (3) containing pages and dlls.

C:\PROJECTS\MYPROJECT
│   MyProject.sln
│   pom.xml
│
└───MyWebApplication
    │   Default.aspx
    │   Default.aspx.cs
    │   Default.aspx.designer.cs
    │   pom.xml
    │   MyWebApplication.csproj
    │   Web.config
    │
    ├───bin
    ├───obj
    │   └───Debug
    │       └───TempPE
    └───Properties
            AssemblyInfo.cs

Note: Some versions of NMaven have limited support for a "nested" project-within-project structure with source code in the parent directory. This structure will have a .sln and .vbproj file at the top, then directories for additional modules beneath, each containing a .vbproj file. This structure is NOT RECOMMENDED and not likely to be fully supported by Maven tools such as the Release plugin.

TODO: ASP.NET Web Service Application

TODO: ADO.NET project structure

NOTE: In the examples, .vbproj and .csproj are interchangeable, each structure should work for any language, and a solution may be composed of different modules using different languages. In addition, tests within a module may be written in a different language than the main artifact.

  • No labels