На настольной стороне, Моно работы, большие, если Вы принимаете на себя обязательство использовать GTK#. Windows. Реализация форм является все еще небольшим багги (например, TrayIcon не работают), но это проделало длинный путь. Кроме того, GTK# является лучшим инструментарием, чем Windows Forms как есть
На веб-стороне, Моно, реализовали достаточно ASP.NET для выполнения большинства сайтов отлично. Трудность здесь находит хост, который имеет mod_mono, установленный на апаче или выполнении ее самостоятельно, если у Вас есть доступ оболочки к Вашему хосту.
Так или иначе, Моно является большим, и стабильным.
Ключевые вещи помнить при создании кросс-платформенной программы:
Path.Separator
вместо жесткого кодирования "\"
, также использовать Environment.NewLine
вместо "\n"
. Правильный способ сделать это в Maven - установить его в репозиторий (удаленный или локальный).
Однако есть обстоятельства, что локальный репозиторий является менее предпочтительно. Например, вы запускаете Maven на множестве машин и не хотите устанавливать его вручную.
В этих редких случаях я просто использую антишаблон проверки JAR в системе контроля версий. Я даже не стал устанавливать его в локальный репозиторий, потому что он добавляет еще один шаг и создает еще одну копию JAR. Я просто использую JAR прямо вот так:
<dependency>
<groupId>local</groupId>
<artifactId>homeless-jar</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${basedir}/lib/homeless.jar
</systemPath>
</dependency>
РЕДАКТИРОВАТЬ: $ {basedir} определяется Maven. Это базовый каталог проекта Maven, в котором находится ваш pom.xml. Мой пример был непонятен. См. Этот:
<dependency>
<groupId>any-id</groupId>
<artifactId>any-name</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${basedir}/src/main/lib/homeless.jar
</systemPath>
</dependency>
Вы можете установить jar-файл в локальный репозиторий с помощью цели установочного файла плагина установки, затем вы можете объявить зависимость от артефакта как обычно, и это будет автоматически упаковывается в вашу войну плагином war.
Если у вас есть удаленный репозиторий, вы можете использовать цель файла развертывания плагина развертывания для развертывания jar-файла в этом репозитории, тогда ваши товарищи по команде могут получить доступ к jar.
Для информации, существует Jira , позволяющая сделать этот артефакт доступным из центра.
Обновление на основе вашего комментария. Я бы рекомендовал не делать этого, поскольку это не очень хорошая практика, но если вы должны разместить банку в исходной структуре вашего проекта, вы можете поместить ее, скажем, в src / main / lib и использовать плагин antrun, чтобы скопировать его в WEB-INF /lib.
Например:
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>process-resources</phase>
<configuration>
<tasks>
<copy todir="${project.build.directory}/WEB-INF/lib">
<fileset dir="src/main/lib"/>
</copy>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>