Ktoś miał doświadczenie w zarządzaniu projektami opartymi na C# z Mavenem?C# Project Management with Maven
Jeśli tak, proszę powiedzieć kilka słów na ten temat, jak dziwnie byłoby stworzyć taką konfigurację.
Dzięki
Ktoś miał doświadczenie w zarządzaniu projektami opartymi na C# z Mavenem?C# Project Management with Maven
Jeśli tak, proszę powiedzieć kilka słów na ten temat, jak dziwnie byłoby stworzyć taką konfigurację.
Dzięki
Maven jest język agnostykiem i powinno być możliwe, aby używać go z inne języki niż Java, w tym C#. Na przykład model Maven Compiler Plugin można skonfigurować do korzystania z kompilatora csharp
. Istnieje również .NET Maven plugin i na javaforge.com pojawił się maven-csharp (wydaje się martwy).
Jednak najwięcej uwagi i mocy człowieka zdobywa Java, a nie robi się zbyt wiele z innymi językami. Tak więc, podczas gdy używanie Mavena z C# jest teoretycznie możliwe, nie oczekiwałbym dużego wsparcia i opinii od społeczności (tj. W razie problemu będziesz sam). Nie wiem, czy używanie Mavena dla C# byłoby dobrym pomysłem. Nie polecałbym tego (może się myliłem oczywiście).
Jest NMaven projekt na CodePlex, ale nie wydaje się być aktywny lub popularne. Zobacz także te pytania:
Możesz również sprawdzić NPanday (jest to projekt, w który jestem zaangażowany). Chociaż nadal wymaga to trochę pracy, aby lepiej dostosować się do najlepszych praktyk Mavena, jest to najbardziej kompletna i aktywna alternatywa dostępna obecnie. Jedną z unikatowych funkcji jest istnienie dodatku Visual Studio do generowania poprawnego ID2.
Pracuję z zestawem składników i aplikacji C# i C++, które są zarządzane przez zależności za pośrednictwem maven. Ogólna zasada "Jeśli można to zrobić za pomocą wiersza poleceń, można to zrobić w maven", więc kończymy na tym, że mamy dużo "kleju" .bat, .exe i powershell, aby wszystkie kawałki razem się odtwarzały.
Największy problem z używaniem maven dla stosu Microsoft to całkowity brak znajomości cyklu budowania/wdrażania/ALM dla dowolnego nowego programisty. Możesz znaleźć wielu programistów z MSBuild, TFSBuild, ANT, itp., Ale rzadko jest znaleźć C# lub C++ dev, który pracował z maven w czystym sklepie Microsoftu. Wdrożenie narzędzia do zarządzania zależnościami i procesem kompilacji jest w związku z tym niezwykle trudne, ponieważ kończysz spędzać dużo czasu na programowaniu szkoleniowym (jaka jest różnica między migawką a wersją?), Nadmiernie komponować produkt, a następnie skalować go, aby uzyskać to dobrze, itp.
Odkryłem również, że musieliśmy pracować wokół maven, aby zrobić coś przypominającego ciągłą integrację i ciągłe dostarczanie. Około 70% naszego stosu technologii to C# (reszta to C++), a my chcemy wdrażać większość tego na serwerach QA każdej nocy z najnowszym i największym kodem domyślnie. Aby zrównoważyć wartość wersji wydań i produktywności deweloperów za pomocą migawek, skonstruowaliśmy proces budowania, w którym każdego wieczora tworzymy kompilację wydania każdego komponentu, a następnie budujemy migawkę. Pozwoliło to programistom nie martwić się o to, że pominiemy POMy, aby zużywać migawki rano. Ogólnie rzecz biorąc, jest to królewski ból, przynajmniej dla kogoś, kto pochodzi z solidnej ciągłej integracji, "buduj i wdrażaj wszystko".
Maven ma wiele obietnic w zakresie zarządzania zależnościami i izolowania przełomowych zmian (szczególnie w komponentach interfejsu, na które konsument i producent muszą się zgodzić). Problemy te zostały rozwiązane w inny sposób (svn externs, kompilacje wdrożeń, zarządzanie wersjami interfejsu itp.). Ale stosunkowo ładnie jest pobrać dowolny komponent, uruchomić "mvn compile" i zobaczyć kompilację kodu (zakładając podstawowy poziom przenośności budowania). Dla mnie jednak koszty ogólne i meta-rozmowy na temat uzyskania właściwej wersji (w przeciwieństwie do skupiania się na wartości klienta) minimalizują wartość całej usługi.
maven-kompilator-wtyczka z kompilatorem-plexus-csharp działa dobrze przy następującej konfiguracji. Oczywiście będziesz musiał wskazać rzeczywisty kompilator C# na komputerze z parametrem "wykonywalny".
<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 Core można użyć dotnet-maven-plugin który napędza dotnet
i nuget
poleceń, a także dodano obsługę np czyszczenie, puszczanie itp. w "Maven way".
Oto przykład konfiguracji wtyczki:
<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>
(Zwróć uwagę na rodzaj opakowania ustawiony dotnet).
ten będzie następnie odczytać z pliku project.json i uruchomić DotNet i Nuget polecenia zgodnie z fazami cyklu życia takich jak Maven czysty, kompilacji testu zainstalować itp
Updated moją odpowiedź na przykładzie –