2010-02-17 56 views
16

Bất cứ ai có kinh nghiệm quản lý các dự án dựa trên C# với Maven?C# Quản lý dự án với Maven

Nếu có, xin vui lòng cho tôi biết một vài từ về nó, làm thế nào lạ nó sẽ được tạo ra như một thiết lập.

Cảm ơn

Trả lời

20

Maven là ngôn ngữ thuyết bất khả tri và người ta có thể sử dụng nó với các ngôn ngữ khác ngoài Java, bao gồm C#. Ví dụ: Maven Compiler Plugin có thể được định cấu hình để sử dụng trình biên dịch csharp. Ngoài ra còn có một số .NET Maven plugin và có một số maven-csharp trên javaforge.com (có vẻ như đã chết).

Nhưng Java đang nhận được sự chú ý nhất và sức mạnh của con người và không được thực hiện nhiều với các ngôn ngữ khác. Vì vậy, trong khi sử dụng Maven với C# là lý thuyết có thể, tôi sẽ không mong đợi nhiều hỗ trợ và phản hồi từ cộng đồng (ví dụ: trong trường hợp có vấn đề, bạn sẽ ở một mình). Tôi không biết nếu sử dụng Maven cho C# do đó sẽ là một ý tưởng tốt. Tôi sẽ không khuyên bạn nên nó thực sự (tôi có thể sai tất nhiên).

4

Bạn cũng có thể xem NPanday (đây là dự án tôi tham gia). Mặc dù vẫn cần một số công việc để căn chỉnh chặt chẽ hơn với các phương pháp hay nhất của Maven, nhưng đây là giải pháp hoàn chỉnh và tích cực nhất hiện có. Một tính năng duy nhất cho nó là sự tồn tại của một Visual Studio Add-in để tạo đúng pom.xml từ IDE.

12

Tôi làm việc với bộ các thành phần và ứng dụng C# và C++ được quản lý phụ thuộc qua maven. Nguyên tắc chung của "Nếu nó có thể được thực hiện thông qua dòng lệnh, nó có thể được thực hiện trong maven" giữ, vì vậy chúng tôi sẽ có rất nhiều .bat, .exe và powershell "keo" để có được tất cả các mảnh chơi với nhau.

Vấn đề lớn nhất khi sử dụng maven cho ngăn xếp của Microsoft là thiếu sự quen thuộc hoàn toàn với chu trình xây dựng/triển khai/ALM cho BẤT CỨ nhà phát triển mới. Bạn có thể tìm thấy nhiều nhà phát triển với MSBuild, TFSBuild, ANT, v.v., nhưng đó là một điều hiếm hoi để tìm một người phát triển C# hoặc C++, người đã làm việc với maven trong một cửa hàng Microsoft thuần túy. Việc triển khai maven cho quản lý phụ thuộc và quá trình xây dựng là cực kỳ khó khăn, vì bạn cuối cùng chi tiêu rất nhiều nhà phát triển đào tạo thời gian (sự khác biệt giữa ảnh chụp và bản phát hành là gì?), Tổng hợp lại sản phẩm rồi thu nhỏ lại để có được đúng, v.v.

Tôi cũng thấy rằng chúng tôi phải làm việc xung quanh maven để làm điều gì đó giống như tích hợp liên tục và phân phối liên tục. Khoảng 70% ngăn xếp công nghệ của chúng tôi là C# (phần còn lại là C++), và chúng tôi muốn triển khai hầu hết số đó cho các máy chủ QA mỗi đêm với mã mới nhất và lớn nhất theo mặc định. Để cân bằng giá trị của bản phát hành so với hiệu năng của dev thông qua ảnh chụp nhanh, chúng tôi đã kết thúc việc xây dựng quy trình xây dựng nơi chúng tôi tạo bản phát hành của mỗi thành phần mỗi đêm, theo sau là bản dựng nhanh. Điều này cho phép các nhà phát triển không phải lo lắng về việc đụng POM để tiêu thụ ảnh chụp nhanh vào buổi sáng. Nói chung, đó là một nỗi đau hoàng gia, ít nhất là đối với một người đến từ hội nhập liên tục mạnh mẽ, "xây dựng và triển khai tất cả mọi thứ" môi trường.

Maven nắm giữ rất nhiều hứa hẹn về quản lý phụ thuộc và cách ly các thay đổi đột phá (đặc biệt trong các thành phần giao diện mà người tiêu dùng và nhà sản xuất phải đồng ý). Những vấn đề đó đã được giải quyết theo các cách khác (svn externs, triển khai xây dựng, quản lý phiên bản giao diện, vv). Nhưng nó là tương đối tốt đẹp để tải về bất kỳ thành phần, chạy "biên dịch mvn", và xem biên dịch mã (giả định một mức độ cơ bản của xây dựng tính di động). Đối với tôi, mặc dù, các chi phí và các cuộc hội thoại siêu về việc xây dựng quyền (như trái ngược với tập trung vào giá trị khách hàng) giảm thiểu giá trị của maven tổng thể.

0

maven-compiler-plugin với plexus-compiler-csharp hoạt động tốt với cấu hình sau. Tất nhiên bạn sẽ phải trỏ đến một trình biên dịch C# trên máy tính của bạn với tham số "thực thi".

<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> 
3

Đối với NET Core, bạn có thể sử dụng dotnet-maven-plugin mà ổ đĩa dotnetnuget lệnh, cũng như bổ sung hỗ trợ cho ví dụ làm sạch, giải phóng, v.v. trong "Maven way".

Dưới đây là một ví dụ cắm cấu hình:

<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> 

(Chú ý các loại bao bì thiết lập để DotNet).

này sau đó sẽ đọc từ tập tin project.json và chạy DotNet và lệnh NuGet theo các giai đoạn maven vòng đời như sạch, biên dịch, kiểm tra, cài đặt, vv

+0

cập nhật câu trả lời của tôi với một ví dụ –

Các vấn đề liên quan