C # Управление проектами с Maven - PullRequest
21 голосов
/ 17 февраля 2010

Кто-нибудь имел опыт управления проектами на C # с Maven?

Если да, скажите, пожалуйста, несколько слов об этом, как странно было бы создать такую ​​установку.

Спасибо

Ответы [ 7 ]

25 голосов
/ 17 февраля 2010

Maven не зависит от языка, и его можно использовать с другими языками, кроме Java, включая C #. Например, Плагин компилятора Maven можно настроить на использование компилятора csharp. Существует также плагин .NET Maven , а на javaforge.com (* 1008) был maven-csharp .

Но Java привлекает наибольшее внимание и силу человека, и с другими языками мало что делается. Таким образом, хотя теоретически возможно использование Maven с C #, я не ожидаю большой поддержки и обратной связи от сообщества (т. Е. В случае возникновения проблем вы будете одни). Я не знаю, будет ли использование Maven для C # таким образом хорошей идеей. Я бы не советовал (на самом деле я могу ошибаться).

14 голосов
/ 14 февраля 2013

Я работаю с набором компонентов и приложений на C # и C ++, которые управляются зависимостями через maven. Общее правило «Если это можно сделать через командную строку, это можно сделать в maven», так что в итоге мы получаем много «склеек» .bat, .exe и powershell, чтобы собрать все части вместе.

Самая большая проблема с использованием maven для стека Microsoft - полное отсутствие знакомства с циклом сборки / развертывания / ALM для ЛЮБОГО нового разработчика. Вы можете найти много разработчиков с опытом работы с MSBuild, TFSBuild, ANT и т. Д., Но это редкость, когда можно найти разработчика на C # или C ++, который работал с maven в чистом магазине Microsoft. Следовательно, развертывание maven для управления зависимостями и процесса сборки чрезвычайно сложно, так как вы тратите немало времени на обучение разработчиков (в чем разница между моментальным снимком и выпуском?), Чрезмерной компоновкой продукта и его масштабированием для получения это правильно и т. д.

Я также обнаружил, что нам пришлось обойти maven, чтобы сделать что-то, похожее на непрерывную интеграцию и непрерывную доставку. Около 70% нашего технологического стека - это C # (остальное - C ++), и мы хотим развертывать большую часть этого на серверах контроля качества каждую ночь, используя по умолчанию самый последний и самый лучший код. Чтобы сбалансировать ценность сборок релизов и производительности dev с помощью снимков, мы в итоге создали процесс сборки, в котором каждую ночь мы создаем сборку релизов для каждого компонента, а затем сборку снимков. Это позволило разработчикам не беспокоиться о том, что POM'ы будут сталкиваться с утренними снимками. В целом, это непростая задача, по крайней мере, для тех, кто прибегает к надежной непрерывной интеграции, к созданию и развертыванию всех сред.

Maven имеет большие перспективы для управления зависимостями и изоляции критических изменений (особенно в интерфейсных компонентах, где потребитель и производитель должны договориться). Эти проблемы были решены другими способами (svn externs, сборки развертывания, управление версиями интерфейса и т. Д.). Но относительно приятно скачать любой компонент, запустить «mvn compile» и посмотреть, как компилируется код (при условии базового уровня переносимости сборки). Для меня, однако, издержки и мета-разговоры о правильной сборке (в отличие от сосредоточения на потребительской ценности) сводят к минимуму ценность maven в целом.

6 голосов
/ 30 января 2017

Для .NET Core вы можете использовать dotnet-maven-plugin , который управляет командами dotnet и nuget, а также добавляет поддержку, например, очистка, освобождение и т. д. "Maven way".

Вот пример конфигурации плагина:

<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, такими как очистка, компиляция, тестирование, установка и т. Д.

4 голосов
/ 18 февраля 2010

Вы также можете проверить NPanday (это проект, в котором я участвую). Несмотря на то, что по-прежнему требуется некоторая работа для более тесного приведения в соответствие с лучшими практиками Maven, сейчас это наиболее полная и активная альтернатива. Одной из уникальных функций является наличие надстройки Visual Studio для генерации правильного pom.xml из IDE.

0 голосов
/ 15 февраля 2019

Проверьте это: http://interfaceable.blogspot.com/2019/01/how-to-mavenize-visual-studio-project.html

В то время, когда я разрабатывал эти сценарии / решения, я не знал, что такая поддержка csharp существовала в Maven, но я действительно рекомендую использовать Maven для сборки, поскольку она позволяет автоматизировать / организовать все, например IIS + ActiveMQ + MongoDB на этапе предварительного тестирования, и затем мы можем запускать тесты, используя vstest. Не говоря уже о том, что вы можете интегрировать его с Jenkins и запускать сборки на удаленном компьютере.

Я лично рекомендую это, но имейте в виду, что иногда вы будете сталкиваться с некоторыми проблемами.

0 голосов
/ 30 марта 2013

maven-compiler-plugin с plexus-compiler-csharp прекрасно работает со следующей конфигурацией. Конечно, вам нужно указать на фактический компилятор 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>
0 голосов
/ 17 февраля 2010

В codeplex есть проект NMaven , но он не кажется активным или популярным. Смотрите также эти вопросы:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...