Author: brett Date: Mon Jun 30 19:14:46 2008 New Revision: 672974 URL: http://svn.apache.org/viewvc?rev=672974&view=rev Log: [NMAVEN-115] Using the systemPath element in a dependecy doesn't work Submitted by: Napoleon Esmundo C. Ramirez
Modified: incubator/nmaven/branches/NMAVEN_0.14/assemblies/NMaven.Artifact/src/main/csharp/NMaven/Artifact/Artifact.cs incubator/nmaven/branches/NMAVEN_0.14/assemblies/NMaven.Solution/ProjectGeneratorImpl.cs incubator/nmaven/branches/NMAVEN_0.14/components/dotnet-artifact/src/main/java/org/apache/maven/dotnet/artifact/impl/AssemblyResolverImpl.java incubator/nmaven/branches/NMAVEN_0.14/components/dotnet-dao/project/src/main/java/org/apache/maven/dotnet/dao/ProjectDependency.java incubator/nmaven/branches/NMAVEN_0.14/components/dotnet-dao/project/src/main/java/org/apache/maven/dotnet/dao/ProjectFactory.java incubator/nmaven/branches/NMAVEN_0.14/components/dotnet-dao/project/src/main/java/org/apache/maven/dotnet/dao/impl/ProjectDaoImpl.java Modified: incubator/nmaven/branches/NMAVEN_0.14/assemblies/NMaven.Artifact/src/main/csharp/NMaven/Artifact/Artifact.cs URL: http://svn.apache.org/viewvc/incubator/nmaven/branches/NMAVEN_0.14/assemblies/NMaven.Artifact/src/main/csharp/NMaven/Artifact/Artifact.cs?rev=672974&r1=672973&r2=672974&view=diff ============================================================================== --- incubator/nmaven/branches/NMAVEN_0.14/assemblies/NMaven.Artifact/src/main/csharp/NMaven/Artifact/Artifact.cs (original) +++ incubator/nmaven/branches/NMAVEN_0.14/assemblies/NMaven.Artifact/src/main/csharp/NMaven/Artifact/Artifact.cs Mon Jun 30 19:14:46 2008 @@ -40,6 +40,8 @@ private String remotePath; + private string systemPath; + public String RemotePath { get { return remotePath; } @@ -81,5 +83,11 @@ get { return artifactScope; } set { artifactScope = value; } } + + public string SystemPath + { + get { return systemPath; } + set { systemPath = value; } + } } } Modified: incubator/nmaven/branches/NMAVEN_0.14/assemblies/NMaven.Solution/ProjectGeneratorImpl.cs URL: http://svn.apache.org/viewvc/incubator/nmaven/branches/NMAVEN_0.14/assemblies/NMaven.Solution/ProjectGeneratorImpl.cs?rev=672974&r1=672973&r2=672974&view=diff ============================================================================== --- incubator/nmaven/branches/NMAVEN_0.14/assemblies/NMaven.Solution/ProjectGeneratorImpl.cs (original) +++ incubator/nmaven/branches/NMAVEN_0.14/assemblies/NMaven.Solution/ProjectGeneratorImpl.cs Mon Jun 30 19:14:46 2008 @@ -34,20 +34,20 @@ namespace NMaven.Solution.Impl { - /// <summary> - /// Implementation of the IProjectGenerator. - /// </summary> - internal sealed class ProjectGeneratorImpl : IProjectGenerator - { + /// <summary> + /// Implementation of the IProjectGenerator. + /// </summary> + internal sealed class ProjectGeneratorImpl : IProjectGenerator + { private Dictionary<String, String> directoryToFileNameExtensionMapping; private Dictionary<String, String> directoryToImportProject; - + /// <summary> /// Constructor /// </summary> - internal ProjectGeneratorImpl() - { + internal ProjectGeneratorImpl() + { directoryToFileNameExtensionMapping = new Dictionary<string,string>(); directoryToFileNameExtensionMapping.Add("csharp", ".csproj"); directoryToFileNameExtensionMapping.Add("vb", ".vbproj"); @@ -55,52 +55,52 @@ directoryToImportProject = new Dictionary<string, string>(); directoryToImportProject.Add("csharp", @"$(MSBuildBinPath)\Microsoft.CSharp.Targets"); directoryToImportProject.Add("vb", @"$(MSBuildBinPath)\Microsoft.VisualBasic.Targets"); - } - - public IProjectReference GenerateProjectFor(NMaven.Model.Pom.Model model, - DirectoryInfo sourceFileDirectory, - String projectFileName, - ICollection<IProjectReference> projectReferences, - DirectoryInfo localRepository) - { - Guid projectGuid = Guid.NewGuid(); + } + + public IProjectReference GenerateProjectFor(NMaven.Model.Pom.Model model, + DirectoryInfo sourceFileDirectory, + String projectFileName, + ICollection<IProjectReference> projectReferences, + DirectoryInfo localRepository) + { + Guid projectGuid = Guid.NewGuid(); if (projectReferences == null) { projectReferences = new List<IProjectReference>(); } - Project project = GetProjectFromPomModel(model, - sourceFileDirectory, - projectFileName, - projectGuid, - @"..\..\..\target\bin\Debug\", - @"..\..\..\target\obj\", - projectReferences, - localRepository); + Project project = GetProjectFromPomModel(model, + sourceFileDirectory, + projectFileName, + projectGuid, + @"..\..\..\target\bin\Debug\", + @"..\..\..\target\obj\", + projectReferences, + localRepository); String fileNameExtension = directoryToFileNameExtensionMapping[sourceFileDirectory.Name]; FileInfo fileInfo = new FileInfo(sourceFileDirectory.FullName + @"\" + projectFileName + fileNameExtension); - project.Save(fileInfo.FullName); + project.Save(fileInfo.FullName); IProjectReference projectReference = Factory.createDefaultProjectReference(); - projectReference.ProjectFile = fileInfo; - projectReference.ProjectGuid = projectGuid; - projectReference.ProjectName = projectFileName; - return projectReference; - } + projectReference.ProjectFile = fileInfo; + projectReference.ProjectGuid = projectGuid; + projectReference.ProjectName = projectFileName; + return projectReference; + } public void GenerateSolutionFor(FileInfo fileInfo, ICollection<IProjectReference> projectReferences) - { - TextWriter writer = - new StreamWriter(fileInfo.FullName, false, System.Text.Encoding.UTF8); - writer.WriteLine(""); - writer.WriteLine("Microsoft Visual Studio Solution File, Format Version 9.00"); - writer.WriteLine("# Visual Studio 2005"); - writer.WriteLine("# SharpDevelop 2.1.0.2376"); - - Guid solutionGuid = Guid.NewGuid(); - foreach(IProjectReference projectReference in projectReferences) - { + { + TextWriter writer = + new StreamWriter(fileInfo.FullName, false, System.Text.Encoding.UTF8); + writer.WriteLine(""); + writer.WriteLine("Microsoft Visual Studio Solution File, Format Version 9.00"); + writer.WriteLine("# Visual Studio 2005"); + writer.WriteLine("# SharpDevelop 2.1.0.2376"); + + Guid solutionGuid = Guid.NewGuid(); + foreach(IProjectReference projectReference in projectReferences) + { string projectType = null; string projectFileExtension = projectReference.ProjectFile.Extension; if (projectFileExtension == ".csproj") @@ -114,28 +114,28 @@ writer.Write("Project(\"{"); writer.Write(projectType); - writer.Write("}\") = \""); - writer.Write(projectReference.ProjectName); - writer.Write("\", \""); - writer.Write(projectReference.ProjectFile.FullName); - writer.Write("\", \"{"); - writer.Write(projectReference.ProjectGuid.ToString()); - writer.WriteLine("}\""); - writer.WriteLine("EndProject"); - - } - writer.Flush(); - writer.Close(); - Console.WriteLine("NMAVEN-000-000: Generate solution file: File Name = " + fileInfo.FullName); - } - - public NMaven.Model.Pom.Model CreatePomModelFor(String fileName) - { - TextReader reader = new StreamReader(fileName); - XmlSerializer serializer = new XmlSerializer(typeof(NMaven.Model.Pom.Model)); - return (NMaven.Model.Pom.Model) serializer.Deserialize(reader); - } - + writer.Write("}\") = \""); + writer.Write(projectReference.ProjectName); + writer.Write("\", \""); + writer.Write(projectReference.ProjectFile.FullName); + writer.Write("\", \"{"); + writer.Write(projectReference.ProjectGuid.ToString()); + writer.WriteLine("}\""); + writer.WriteLine("EndProject"); + + } + writer.Flush(); + writer.Close(); + Console.WriteLine("NMAVEN-000-000: Generate solution file: File Name = " + fileInfo.FullName); + } + + public NMaven.Model.Pom.Model CreatePomModelFor(String fileName) + { + TextReader reader = new StreamReader(fileName); + XmlSerializer serializer = new XmlSerializer(typeof(NMaven.Model.Pom.Model)); + return (NMaven.Model.Pom.Model) serializer.Deserialize(reader); + } + /// <summary> /// Returns a project binding (xmlns="http://schemas.microsoft.com/developer/msbuild/2003") from the given model /// (pom.xml) file @@ -148,19 +148,19 @@ /// <param name="baseIntermediateOutputPath">directory where the IDE output files are placed</param> /// <param name="projectReferences">references to other projects that this project is dependent upon</param> /// <returns>Returns a project binding for the specified model</returns> - private Project GetProjectFromPomModel(NMaven.Model.Pom.Model model, - DirectoryInfo sourceFileDirectory, - String assemblyName, - Guid projectGuid, - String assemblyOutputPath, - String baseIntermediateOutputPath, + private Project GetProjectFromPomModel(NMaven.Model.Pom.Model model, + DirectoryInfo sourceFileDirectory, + String assemblyName, + Guid projectGuid, + String assemblyOutputPath, + String baseIntermediateOutputPath, ICollection<IProjectReference> projectReferences, DirectoryInfo localRepository) - { - if(model == null || sourceFileDirectory == null) - { - throw new ExecutionException("NMAVEN-000-000: Missing required parameter."); - } + { + if(model == null || sourceFileDirectory == null) + { + throw new ExecutionException("NMAVEN-000-000: Missing required parameter."); + } Engine engine = new Engine(Environment.GetEnvironmentVariable("SystemRoot") + @"\Microsoft.NET\Framework\v2.0.50727"); Project project = new Project(engine); @@ -189,106 +189,111 @@ DirectoryInfo configDirectory = new DirectoryInfo(Environment.CurrentDirectory + @"\src\main\config"); if(configDirectory.Exists) { - BuildItemGroup configGroup = project.AddNewItemGroup(); - foreach(FileInfo fileInfo in configDirectory.GetFiles()) - { - if(fileInfo.Extension.Equals("exe.config")) - { - configGroup.AddNewItem("None", @"src\main\config\" + fileInfo.Name); - } - } + BuildItemGroup configGroup = project.AddNewItemGroup(); + foreach(FileInfo fileInfo in configDirectory.GetFiles()) + { + if(fileInfo.Extension.Equals("exe.config")) + { + configGroup.AddNewItem("None", @"src\main\config\" + fileInfo.Name); + } + } } AddProjectDependencies(project, model, sourceFileDirectory, localRepository); AddFoldersToProject(project, null, sourceFileDirectory, sourceFileDirectory); AddClassFilesToProject(project, null, sourceFileDirectory, sourceFileDirectory); AddProjectReferences(project, assemblyName, projectReferences); - return project; - - } + return project; + + } private void AddProjectReferences(Project project, String projectName, ICollection<IProjectReference> projectReferences) - { - BuildItemGroup itemGroup = project.AddNewItemGroup(); - foreach(IProjectReference projectReference in projectReferences) - { - BuildItem buildItem = itemGroup.AddNewItem("ProjectReference", projectReference.ProjectFile.FullName); - buildItem.SetMetadata("Project", "{" + projectReference.ProjectGuid.ToString() + "}"); - buildItem.SetMetadata("Name", projectName); - } - } - - private void AddFoldersToProject(Project project, BuildItemGroup folderGroup, DirectoryInfo rootDirectory, + { + BuildItemGroup itemGroup = project.AddNewItemGroup(); + foreach(IProjectReference projectReference in projectReferences) + { + BuildItem buildItem = itemGroup.AddNewItem("ProjectReference", projectReference.ProjectFile.FullName); + buildItem.SetMetadata("Project", "{" + projectReference.ProjectGuid.ToString() + "}"); + buildItem.SetMetadata("Name", projectName); + } + } + + private void AddFoldersToProject(Project project, BuildItemGroup folderGroup, DirectoryInfo rootDirectory, DirectoryInfo sourceFileDirectory) - { + { DirectoryInfo[] directoryInfos = rootDirectory.GetDirectories(); if(directoryInfos != null && directoryInfos.Length > 0) - { - if(folderGroup == null) folderGroup = project.AddNewItemGroup(); - - foreach(DirectoryInfo di in directoryInfos) - { - if(di.FullName.Contains(".svn") || di.FullName.Contains(@"obj") || di.FullName.Contains(@"bin")) - continue; - folderGroup.AddNewItem("Folder", di.FullName.Substring(sourceFileDirectory.FullName.Length)); - AddFoldersToProject(project, folderGroup, di, sourceFileDirectory); - } - } - } - - private void AddClassFilesToProject(Project project, BuildItemGroup compileGroup, DirectoryInfo rootDirectory, + { + if(folderGroup == null) folderGroup = project.AddNewItemGroup(); + + foreach(DirectoryInfo di in directoryInfos) + { + if(di.FullName.Contains(".svn") || di.FullName.Contains(@"obj") || di.FullName.Contains(@"bin")) + continue; + folderGroup.AddNewItem("Folder", di.FullName.Substring(sourceFileDirectory.FullName.Length)); + AddFoldersToProject(project, folderGroup, di, sourceFileDirectory); + } + } + } + + private void AddClassFilesToProject(Project project, BuildItemGroup compileGroup, DirectoryInfo rootDirectory, DirectoryInfo sourceFileDirectory) - { - DirectoryInfo[] directoryInfos = rootDirectory.GetDirectories(); + { + DirectoryInfo[] directoryInfos = rootDirectory.GetDirectories(); if(directoryInfos != null && directoryInfos.Length > 0) { if (compileGroup == null) { compileGroup = project.AddNewItemGroup(); } - - foreach(DirectoryInfo di in directoryInfos) - { + + foreach(DirectoryInfo di in directoryInfos) + { if (di.FullName.Contains(".svn") || di.FullName.Contains("obj") || di.FullName.Contains("bin")) { continue; - } - foreach(FileInfo fileInfo in di.GetFiles()) - { - BuildItem buildItem = - compileGroup.AddNewItem("Compile", - fileInfo.FullName.Substring(sourceFileDirectory.FullName.Length)); - } - AddClassFilesToProject(project, compileGroup, di, sourceFileDirectory); - } - } - } - - private void AddProjectDependencies(Project project, NMaven.Model.Pom.Model model, DirectoryInfo sourceFileDirectory, - DirectoryInfo localRepository) - { - BuildItemGroup group = project.AddNewItemGroup(); - group.AddNewItem("Reference", "System.Xml"); - if(model.dependencies != null) - { - ArtifactContext artifactContext = new ArtifactContext(); - foreach(Dependency dependency in model.dependencies) - { - //String artifactExtension = (dependency.type == "module") ? "dll" : GetExtension(dependency.type); - NMaven.Artifact.Artifact dependencyArtifact = artifactContext.CreateArtifact(dependency.groupId, - dependency.artifactId, dependency.version, dependency.type); - - String repoPath = PathUtil.GetUserAssemblyCacheFileFor(dependencyArtifact, localRepository).FullName; - BuildItem buildItem = group.AddNewItem("Reference", dependency.artifactId); - //TODO: Fix this. Just because it is in the GAC on the system that builds the .csproj does not mean - //it is in the GAC on another system. - if (!dependency.GetType().Equals("gac") && !IsInGac(dependency.artifactId)) + } + foreach(FileInfo fileInfo in di.GetFiles()) + { + BuildItem buildItem = + compileGroup.AddNewItem("Compile", + fileInfo.FullName.Substring(sourceFileDirectory.FullName.Length)); + } + AddClassFilesToProject(project, compileGroup, di, sourceFileDirectory); + } + } + } + + private void AddProjectDependencies(Project project, NMaven.Model.Pom.Model model, DirectoryInfo sourceFileDirectory, + DirectoryInfo localRepository) + { + BuildItemGroup group = project.AddNewItemGroup(); + group.AddNewItem("Reference", "System.Xml"); + if(model.dependencies != null) + { + ArtifactContext artifactContext = new ArtifactContext(); + foreach(Dependency dependency in model.dependencies) + { + //String artifactExtension = (dependency.type == "module") ? "dll" : GetExtension(dependency.type); + NMaven.Artifact.Artifact dependencyArtifact = artifactContext.CreateArtifact(dependency.groupId, + dependency.artifactId, dependency.version, dependency.type); + + String repoPath = PathUtil.GetUserAssemblyCacheFileFor(dependencyArtifact, localRepository).FullName; + BuildItem buildItem = group.AddNewItem("Reference", dependency.artifactId); + //TODO: Fix this. Just because it is in the GAC on the system that builds the .csproj does not mean + //it is in the GAC on another system. + + if("system".Equals(dependency.scope)) + { + buildItem.SetMetadata("HintPath", dependency.systemPath, false); + } + else if (!dependency.GetType().Equals("gac") && !IsInGac(dependency.artifactId)) { buildItem.SetMetadata("HintPath", repoPath, false); } - } - } + } + } - DirectoryInfo[] directoryInfos = sourceFileDirectory.GetDirectories(); + DirectoryInfo[] directoryInfos = sourceFileDirectory.GetDirectories(); ClassParser classParser = new ClassParser(); List<FileInfo> fileInfos = new List<FileInfo>(); @@ -296,48 +301,48 @@ List<String> dependencies = classParser.GetDependencies(fileInfos); foreach(String dependency in dependencies) { - try { + try { String assembly = GetAssemblyFor(dependency); if(IsInGac(assembly)) { - group.AddNewItem("Reference", assembly); - } - } - catch(Exception e) - { - Console.WriteLine("NMAVEN-000-000: Could not find assembly dependency", e.Message); - } + group.AddNewItem("Reference", assembly); + } + } + catch(Exception e) + { + Console.WriteLine("NMAVEN-000-000: Could not find assembly dependency", e.Message); + } } - } - - private bool IsInGac(String assembly) - { - return new DirectoryInfo(Environment.GetEnvironmentVariable("SystemRoot") - + @"\assembly\GAC_MSIL\" + assembly).Exists; - } + } + + private bool IsInGac(String assembly) + { + return new DirectoryInfo(Environment.GetEnvironmentVariable("SystemRoot") + + @"\assembly\GAC_MSIL\" + assembly).Exists; + } private String GetAssemblyFor(String dependency) { return (dependency.Trim().Equals("System.Resources")) ? "System.Windows.Forms" : dependency; } - - private void AddFileInfosFromSourceDirectories(DirectoryInfo sourceFileDirectory, List<FileInfo> fileInfos ) - { + + private void AddFileInfosFromSourceDirectories(DirectoryInfo sourceFileDirectory, List<FileInfo> fileInfos ) + { DirectoryInfo[] directoryInfos = sourceFileDirectory.GetDirectories(); if(directoryInfos != null && directoryInfos.Length > 0) - { - foreach(DirectoryInfo di in directoryInfos) - { + { + foreach(DirectoryInfo di in directoryInfos) + { if (di.FullName.Contains(".svn") || di.FullName.Contains("obj") || di.FullName.Contains("bin")) { continue; } - fileInfos.AddRange(di.GetFiles()); - AddFileInfosFromSourceDirectories(di, fileInfos); - } + fileInfos.AddRange(di.GetFiles()); + AddFileInfosFromSourceDirectories(di, fileInfos); + } } - } - - private String GetOutputType(String type,bool isATest) + } + + private String GetOutputType(String type,bool isATest) { if (type.Equals("library") || type.Equals("netplugin") || type.Equals("visual-studio-addin") || type.Equals("sharp-develop-addin") || type.Equals("nar")) return "Library"; @@ -346,49 +351,49 @@ else if (type.Equals("module")) return "Module"; return null; } - - private String GetExtension(String type) - { - if (type.Equals("library") || type.Equals("netplugin") ) return "dll"; - else if (type.Equals("exe")) return "exe"; - else if (type.Equals("winexe")) return "exe"; - else if (type.Equals("module")) return "netmodule"; - return null; - } - - private class ClassParser { - - public List<String> GetDependencies(List<FileInfo> fileInfos) - { - List<String> dependencies = new List<String>(); - foreach(FileInfo fileInfo in fileInfos) - { - try - { - using (StreamReader sr = new StreamReader(fileInfo.FullName)) - { - String line; - while ((line = sr.ReadLine()) != null) - { - if (line.StartsWith("namespace")) break; - if (line.StartsWith("//")) continue; - if (line.StartsWith("using")) { - String[] tokens = line.Remove(line.Length - 1).Split(new char[1]{' '}); - if(!dependencies.Contains(tokens[1])) - { - dependencies.Add(tokens[1]); - } - } - } - } - } - catch (Exception e) - { - Console.WriteLine(e.Message); - } - } - return dependencies; - } - } - } + + private String GetExtension(String type) + { + if (type.Equals("library") || type.Equals("netplugin") ) return "dll"; + else if (type.Equals("exe")) return "exe"; + else if (type.Equals("winexe")) return "exe"; + else if (type.Equals("module")) return "netmodule"; + return null; + } + + private class ClassParser { + + public List<String> GetDependencies(List<FileInfo> fileInfos) + { + List<String> dependencies = new List<String>(); + foreach(FileInfo fileInfo in fileInfos) + { + try + { + using (StreamReader sr = new StreamReader(fileInfo.FullName)) + { + String line; + while ((line = sr.ReadLine()) != null) + { + if (line.StartsWith("namespace")) break; + if (line.StartsWith("//")) continue; + if (line.StartsWith("using")) { + String[] tokens = line.Remove(line.Length - 1).Split(new char[1]{' '}); + if(!dependencies.Contains(tokens[1])) + { + dependencies.Add(tokens[1]); + } + } + } + } + } + catch (Exception e) + { + Console.WriteLine(e.Message); + } + } + return dependencies; + } + } + } } Modified: incubator/nmaven/branches/NMAVEN_0.14/components/dotnet-artifact/src/main/java/org/apache/maven/dotnet/artifact/impl/AssemblyResolverImpl.java URL: http://svn.apache.org/viewvc/incubator/nmaven/branches/NMAVEN_0.14/components/dotnet-artifact/src/main/java/org/apache/maven/dotnet/artifact/impl/AssemblyResolverImpl.java?rev=672974&r1=672973&r2=672974&view=diff ============================================================================== --- incubator/nmaven/branches/NMAVEN_0.14/components/dotnet-artifact/src/main/java/org/apache/maven/dotnet/artifact/impl/AssemblyResolverImpl.java (original) +++ incubator/nmaven/branches/NMAVEN_0.14/components/dotnet-artifact/src/main/java/org/apache/maven/dotnet/artifact/impl/AssemblyResolverImpl.java Mon Jun 30 19:14:46 2008 @@ -115,6 +115,8 @@ projectDependency.setVersion( dependency.getVersion() ); projectDependency.setPublicKeyTokenId( dependency.getClassifier() ); projectDependency.setArtifactType( dependency.getType() ); + projectDependency.setScope(dependency.getScope()); + projectDependency.setSystemPath(dependency.getSystemPath()); project.addProjectDependency( projectDependency ); } Modified: incubator/nmaven/branches/NMAVEN_0.14/components/dotnet-dao/project/src/main/java/org/apache/maven/dotnet/dao/ProjectDependency.java URL: http://svn.apache.org/viewvc/incubator/nmaven/branches/NMAVEN_0.14/components/dotnet-dao/project/src/main/java/org/apache/maven/dotnet/dao/ProjectDependency.java?rev=672974&r1=672973&r2=672974&view=diff ============================================================================== --- incubator/nmaven/branches/NMAVEN_0.14/components/dotnet-dao/project/src/main/java/org/apache/maven/dotnet/dao/ProjectDependency.java (original) +++ incubator/nmaven/branches/NMAVEN_0.14/components/dotnet-dao/project/src/main/java/org/apache/maven/dotnet/dao/ProjectDependency.java Mon Jun 30 19:14:46 2008 @@ -28,6 +28,7 @@ * The scope: runtime, compile, test */ private String scope; + private String systemPath; /** * Returns the scope: runtime, compile, test @@ -48,5 +49,16 @@ { this.scope = scope; } + + + public String getSystemPath() + { + return systemPath; + } + + public void setSystemPath(String systemPath) + { + this.systemPath = systemPath; + } } Modified: incubator/nmaven/branches/NMAVEN_0.14/components/dotnet-dao/project/src/main/java/org/apache/maven/dotnet/dao/ProjectFactory.java URL: http://svn.apache.org/viewvc/incubator/nmaven/branches/NMAVEN_0.14/components/dotnet-dao/project/src/main/java/org/apache/maven/dotnet/dao/ProjectFactory.java?rev=672974&r1=672973&r2=672974&view=diff ============================================================================== --- incubator/nmaven/branches/NMAVEN_0.14/components/dotnet-dao/project/src/main/java/org/apache/maven/dotnet/dao/ProjectFactory.java (original) +++ incubator/nmaven/branches/NMAVEN_0.14/components/dotnet-dao/project/src/main/java/org/apache/maven/dotnet/dao/ProjectFactory.java Mon Jun 30 19:14:46 2008 @@ -68,6 +68,8 @@ dependency.setVersion( projectDependency.getVersion() ); dependency.setType( projectDependency.getArtifactType() ); dependency.setClassifier( projectDependency.getPublicKeyTokenId() ); + dependency.setScope(projectDependency.getScope()); + dependency.setSystemPath(projectDependency.getSystemPath()); dependencies.add( dependency ); } model.setDependencies( dependencies ); @@ -137,6 +139,11 @@ projectDependency.setVersion( dependency.getVersion() ); projectDependency.setPublicKeyTokenId( dependency.getClassifier() ); projectDependency.setArtifactType( dependency.getType() ); + projectDependency.setScope(dependency.getScope()); + projectDependency.setSystemPath(dependency.getSystemPath()); + + projectDependency.setScope(dependency.getScope()); + projectDependency.setSystemPath(dependency.getSystemPath()); logAndVerifyProjectParameters( projectDependency ); @@ -159,6 +166,8 @@ dependency.setVersion( projectDependency.getVersion() ); dependency.setType( projectDependency.getArtifactType() ); dependency.setClassifier( projectDependency.getPublicKeyTokenId() ); + dependency.setScope(projectDependency.getScope()); + dependency.setSystemPath(projectDependency.getSystemPath()); return dependency; } Modified: incubator/nmaven/branches/NMAVEN_0.14/components/dotnet-dao/project/src/main/java/org/apache/maven/dotnet/dao/impl/ProjectDaoImpl.java URL: http://svn.apache.org/viewvc/incubator/nmaven/branches/NMAVEN_0.14/components/dotnet-dao/project/src/main/java/org/apache/maven/dotnet/dao/impl/ProjectDaoImpl.java?rev=672974&r1=672973&r2=672974&view=diff ============================================================================== --- incubator/nmaven/branches/NMAVEN_0.14/components/dotnet-dao/project/src/main/java/org/apache/maven/dotnet/dao/impl/ProjectDaoImpl.java (original) +++ incubator/nmaven/branches/NMAVEN_0.14/components/dotnet-dao/project/src/main/java/org/apache/maven/dotnet/dao/impl/ProjectDaoImpl.java Mon Jun 30 19:14:46 2008 @@ -471,7 +471,54 @@ projectDependency.setResolved( false ); } } + + // resolve system scope dependencies + if(projectDependency.getScope() != null + && projectDependency.getScope().equals("system")) + { + if(projectDependency.getSystemPath() == null) + { + throw new IOException( + "systemPath required for System Scoped dependencies " + + "in Group ID = " + + projectDependency.getGroupId() + + ", Artiract ID = " + + projectDependency.getArtifactId() + ); + } + File f = new File(projectDependency.getSystemPath()); + + if(!f.exists()) + { + throw new IOException( + "Dependency systemPath File not found:" + + projectDependency.getSystemPath() + + "in Group ID = " + + projectDependency.getGroupId() + + ", Artiract ID = " + + projectDependency.getArtifactId() + ); + } + + Artifact assembly = ProjectFactory.createArtifactFrom( projectDependency, artifactFactory ); + assembly.setFile(f); + assembly.setResolved(true); + artifactDependencies.add(assembly); + + projectDependency.setResolved(true); + + logger.info( "NMAVEN-180-011.1: Project Dependency Resolved: Artifact ID = " + + projectDependency.getArtifactId() + ", Group ID = " + projectDependency.getGroupId() + + ", Version = " + projectDependency.getVersion() + ", Scope = " + + projectDependency.getScope() + + "SystemPath = " + + projectDependency.getSystemPath() + ); + + continue; + } + if ( !projectDependency.isResolved() ) { if ( projectDependency.getArtifactType().startsWith( "gac" ) )