回答
Maven是語言無關的,它有可能需要使用它除Java之外的其他語言,包括C#。例如,Maven Compiler Plugin可以配置爲使用csharp
編譯器。還有一個.NET Maven plugin,在javaforge.com上有一個maven-csharp(似乎已經死了)。
但是Java越來越受到人們的關注和人們的關注,而其他語言並沒有太多的工作要做。因此,儘管在理論上使用Maven與C#是可能的,但我不會期望社區提供很多支持和反饋(即在出現問題的情況下,您將獨處)。我不知道如果使用Maven for C#會是一個好主意。我不會真的推薦它(當然我可能是錯的)。
有一個在CodePlex上一個NMaven項目,但它似乎並沒有被激活或流行。另請參閱以下這些問題:
您可能還會退房NPanday(這是一個我參與的項目)。儘管它仍然需要一些工作來更貼近Maven的最佳實踐,但它是目前最完整和最活躍的替代方案。一個獨特的功能就是存在一個Visual Studio加載項,用於從IDE生成正確的pom.xml
。
我使用一套C#和C++組件以及通過maven進行依賴管理的應用程序。 「如果它可以通過命令行完成,它可以在maven中完成」的一般規則,所以我們最終得到了很多.bat,.exe和powershell「粘合劑」來獲得所有作品。
對於Microsoft堆棧使用maven最大的問題是完全不熟悉任何新開發人員的構建/部署/ ALM週期。你可以找到許多有MSBuild,TFSBuild,ANT等經驗的開發者,但是找到一個在純粹的微軟商店中與maven合作的C#或C++開發者是一件罕見的事情。由於您最終需要花費大量時間培訓開發人員(快照與發佈之間的區別是什麼?),因此將產品過度組件化,然後將其擴展到獲得,從而導致用於依賴管理和構建過程的maven的推出非常困難它正確等。
我也發現我們不得不圍繞maven做類似持續集成和持續交付的事情。我們的技術堆棧中約70%是C#(其餘爲C++),並且我們希望每晚在QA服務器上部署大部分的默認最新和最大的代碼。爲了通過快照來平衡發佈版本與開發生產力的價值,我們最終構建了一個構建過程,在該過程中,我們每晚創建每個組件的發佈版本,然後創建快照。這讓開發人員不必擔心在早上碰撞POM來消費快照。總的來說,這是一場皇家的痛苦,至少對於來自穩健持續集成的人來說,「構建和部署一切」環境。
Maven擁有很多承諾依賴管理和隔離中斷變化(特別是在消費者和生產者必須同意的接口組件)。這些問題已經通過其他方式解決(svn externs,部署版本,接口版本管理等)。但是,下載任何組件,運行「mvn compile」並查看代碼編譯(假設構建可移植性的基本級別)是相當不錯的。然而,對我來說,關於如何使構建正確(而不是關注客戶價值)的開銷和元對話最大限度地降低了maven的總體價值。
使用plexus-compiler-csharp的maven-compiler-plugin可以很好地處理以下配置。當然,您必須使用「可執行」參數指向計算機上實際的C#編譯器。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.0</version>
<configuration>
<compilerId>csharp</compilerId>
<fork>true</fork>
<executable>C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe</executable>
<outputFileName>myDLL</outputFileName>
</configuration>
<dependencies>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-compiler-csharp</artifactId>
<version>2.2</version>
</dependency>
</dependencies>
</plugin>
對於.NET核心,可以使用其驅動dotnet
和nuget
命令,以及增加了對例如支持dotnet-maven-plugin清潔,釋放等「Maven方式」。
下面是一個例子插件配置:
<project>
[...]
<packaging>dotnet</packaging>
[...]
<build>
<plugins>
<plugin>
<groupId>org.eobjects.build</groupId>
<artifactId>dotnet-maven-plugin</artifactId>
<version>0.11</version>
<extensions>true</extensions>
</plugin>
</plugins>
</build>
[...]
</project>
(注意包裝類型設置爲的dotnet)。然後
這將從project.json文件中讀取並運行DOTNET和的NuGet命令根據Maven的生命週期階段,如清潔,編譯,測試,安裝等
- 1. 使用Maven管理.NET項目
- 2. 使用Maven進行項目分發
- 3. 使用Visual Studio進行項目管理,沒有TFS?
- 4. 如何使用Excel進行項目管理?
- 5. 使用Team Foundation Server進行項目管理
- 6. 使用Maven管理多個內部項目(從ant/ivy切換)
- 7. Maven多個Maven項目的POM版本管理
- 8. C++ C#項目依賴管理
- 9. 用C#進行SQL Server連接管理#
- 10. 如何集成測試正常使用Hibernate 3彈簧3.0.5進行與Spring事務管理(Maven項目)
- 11. 使用相同的log4j.properties進行多模塊測試Maven項目
- 12. 在Spring項目中使用Maven進行集成測試
- 13. 使用IntelliJ IDEA運行Maven項目
- 14. 使用Spark和Maven運行項目
- 15. 在Visual C++環境中使用Ivy/Maven進行C++二進制依賴關係管理
- 16. 用於託管Maven項目的Bitbucket API
- 17. 運行maven項目
- 18. 如何使用批處理文件運行maven項目?
- 19. 軟件配置管理如何幫助改進項目管理?
- 20. 用Maven管理MultiDependency
- 21. 使用SVN的Eclipse項目管理
- 22. 使用SVN的項目代碼管理
- 23. 使用Git和Eclipse管理Android項目
- 24. 使用IntelliJ管理大型Android項目
- 25. Django喜歡管理項目的C#MVC
- 26. 多項目管理
- 27. 管理Flash項目
- 28. wso2esb - 項目管理
- 29. C++進程管理
- 30. C#進程管理
更新我的答案用一個例子 – 2017-01-31 15:21:58