У кого-нибудь был опыт управления проектами на С# с Maven?
Если да, скажите мне несколько слов об этом, как странно было бы создать такую настройку.
Спасибо
У кого-нибудь был опыт управления проектами на С# с Maven?
Если да, скажите мне несколько слов об этом, как странно было бы создать такую настройку.
Спасибо
Maven является агностиком языка, и его можно использовать с другими языками, кроме Java, включая С#. Например, Maven Compiler Plugin можно настроить для использования csharp
. Существует также .NET Maven plugin и был maven-csharp на javaforge.com(кажется мертвым).
Но Java получает наибольшее внимание и человеческую силу, и с другими языками не так много сделано. Таким образом, при использовании Maven с С# теоретически возможно, я бы не ожидал большой поддержки и обратной связи от сообщества (то есть в случае проблемы вы останетесь в одиночестве). Я не знаю, будет ли использование Maven для С# хорошей идеей. Я бы не рекомендовал это на самом деле (возможно, я ошибаюсь).
Я работаю с набором С# и С++ компонентов и приложений, которые управляются зависимостями через maven. Общее правило: "Если это можно сделать с помощью командной строки, это может быть сделано в maven", значит, у нас есть много .bat,.exe и powershell "glue", чтобы все комбинации играли вместе.
Самая большая проблема с использованием maven для стека Microsoft - полное отсутствие знакомства с циклом сборки/развертывания/ALM для ЛЮБОГО нового разработчика. Вы можете найти много разработчиков с MSBuild, TFSBuild, ANT и т.д., Но это редкая вещь, чтобы найти разработчика С# или С++, который работал с maven в чистом магазине Microsoft. Внедрение maven для управления зависимостями и процесса сборки, следовательно, чрезвычайно сложно, поскольку вы в конечном итоге тратите много разработчиков времени обучения (какая разница между моментальным снимком и выпуском?), Чрезмерно-компонентный продукт, а затем масштабируя его, чтобы получить это правильно и т.д.
Я также обнаружил, что нам нужно было работать над maven, чтобы сделать что-то похожее на непрерывную интеграцию и непрерывную доставку. Около 70% нашего технологического стека - это С# (остальное - С++), и мы хотим развернуть большую часть этого на серверах QA каждую ночь с самым последним и самым лучшим кодом по умолчанию. Чтобы сбалансировать стоимость сборки релиза и производительности dev файлов через моментальные снимки, мы завершили процесс сборки, в котором каждую ночь мы создаем сборку каждого компонента, а за ней следует сборка моментальных снимков. Это позволяет разработчикам не беспокоиться о том, чтобы натыкаться на POM, чтобы использовать снимки утром. В целом, это королевская боль, по крайней мере, для тех, кто прибывает из надежной непрерывной интеграции, "строить и развертывать все".
Maven имеет много обещаний для управления зависимостями и изоляции изменений (особенно в компонентах интерфейса, где потребитель и производитель должны согласиться). Эти проблемы были решены другими способами (svn externs, сборка развертывания, управление версиями интерфейса и т.д.). Но относительно удобно загружать любой компонент, запускать "mvn compile" и видеть компиляцию кода (предполагая базовый уровень мобильности сборки). Для меня, однако, накладные расходы и мета-разговоры о правильном построении (в отличие от фокусировки на ценности клиента) сводят к минимуму значение maven в целом.
Вы также можете проверить NPanday (это проект, в котором я участвую). Хотя по-прежнему требуется некоторая работа, чтобы более точно соответствовать передовой практике Maven, она является наиболее полной и активной альтернативой, доступной сейчас. Уникальной особенностью является наличие надстройки Visual Studio для создания правильного pom.xml
из среды IDE.
Для .NET Core вы можете использовать dotnet-maven-plugin, который управляет командами dotnet
и nuget
, а также добавляет поддержку, например очистки, отпускания и т.д. в режиме "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, такими как очистка, компиляция, тестирование, установка и т.д.
В Codeplex есть проект NMaven, но он не кажется активным или популярным. См. Также следующие вопросы:
maven-compiler-plugin с plexus-compiler-csharp отлично работает со следующей конфигурацией. Конечно, вы должны указать на фактический компилятор С# на вашем компьютере с параметром "executable".
<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>