Это может быть больше технологического решения. В настоящее время я работаю над проектом, который разделен на библиотеку и приложение внедрения. Это очень эффективный способ отладки библиотеки по мере создания приложения. Я хотел бы использовать Maven для обоих проектов, но я не хочу делать сборку и развертывание для каждого незначительного изменения. Есть ли способ, чтобы Maven почти полностью ссылался на проект как на хранилище?Разработка библиотеки с Maven
ответ
Вы правы, это вопрос процесса. Я интерпретирую ваш вопрос как желание избежать объявления конкретной версии библиотеки в качестве зависимости в реализации. Цель состоит в том, чтобы самостоятельно обновить любой компонент, в частности, вы хотите обновить библиотеку, не перестраивая реализацию.
Вам необходимо будет перестроить и переделать что-то, если вы внесете изменения. Однако я вижу два шага, которые должны решить вашу проблему. Я собираюсь назвать ваши компоненты 'lib' и 'app'.
- Создайте пустой проект «обертка», зависимый (scope = runtime) как от lib, так и от приложения. Эта оболочка - это то, что вы развернете. Когда вы обновляете lib или приложение, вам нужно только обновить версию этой зависимости в проекте-обертке. Когда вы «строите» (компиляция является не-оператором) и проверяете проект-оболочку, вы убедитесь, что старое/новое приложение все еще работает с новой/старой библиотекой, и вы можете развернуть это обновление. Конечно, если ваши тесты не сработают, вам нужно будет обновить зависимость lib от приложения, чтобы узнать, исправляет ли проблема перестройку, и попытайтесь найти, у какого компонента есть ошибка. По-моему, это решение на полпути.
- Лучше также создать компонент «lib-api», который объявит интерфейс между lib и app. Сделать lib и app зависимыми от lib-api, но приложение не зависит от конкретной версии lib. Возможно, вам все равно нужен проект-оболочка, как описано выше, для облегчения развертывания (поскольку вам нужно будет фактически развернуть как lib, так и приложение). Но пока вам не нужно влиять на библиотеку api, вы можете быть уверены, что ваши изменения в lib или app защищены друг от друга и не будут (не могут) требовать пересоединения. Это может облегчить отслеживание всех ошибок. Если вам нужно обновить lib-api, вам, очевидно, нужно будет перестроить все, но это будет правда в любом случае и, по крайней мере, так, как это показано в структуре проекта.
Надеюсь, это имеет смысл для вас, и я правильно истолковал ваш вопрос.
У вас может быть «супер-пом», в котором есть два подпроекта. Один проект будет вашей библиотекой, а другой проект будет вашим приложением. Оба могут быть разработаны индивидуально.
Ваше приложение будет иметь зависимость от проекта с библиотекой.
Например:
"супер-П": хранить этот pom.xml в выше каталоге. Вы бы что-то вроде этого в нем:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>your.group</groupId>
<artifactId>project</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<name>caap</name>
<modules>
<module>project-library</module>
<module>project-app</module>
</modules>
</project>
Тогда ваша библиотека pom.xml будет иметь что-то вроде этого:
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>project</artifactId>
<groupId>your.group</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<groupId>=your.group</groupId>
<artifactId>project-library</artifactId>
<version>1.0-SNAPSHOT</version>
<name>project-library</name>
</project>
И ваше приложение будет иметь что-то вроде этого:
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>project</artifactId>
<groupId>your.group</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<groupId>=your.group</groupId>
<artifactId>project-application</artifactId>
<version>1.0-SNAPSHOT</version>
<name>project-application</name>
<dependencies>
<dependency>
<artifactId>project-library</artifactId>
<groupId>your.group</groupId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
mvn install
Похоже, что я хочу. Просто запустив его из проекта, он добавит его в локальное репо, и другие приложения смогут его поднять.
- 1. Разработка библиотеки/отладка с Maven
- 2. Разработка с maven
- 3. Лучшая разработка с Maven
- 4. Импорт библиотеки Fanciful с использованием Maven (разработка плагина сервера Minecraft)
- 5. Веб-разработка с Jetty & Maven
- 6. Разработка плагина Maven 3.0
- 7. Разработка библиотеки шаблонов
- 8. Использование сторонней библиотеки с maven
- 9. Здание библиотеки JUNG с Maven
- 10. Разработка библиотеки ускоренных библиотек es6
- 11. Разработка службы REST с/без Maven
- 12. Разработка с Eclipse проекта Android Maven
- 13. Разработка модулей Vert.x с Maven в NetBeans
- 14. Разработка плагина eclipse с использованием зависимостей maven
- 15. Eclipse maven разработка ушей проекта
- 16. Android Xamarin: разработка библиотеки C#
- 17. Разработка библиотеки кросс-платформы XNA
- 18. Maven и общие библиотеки
- 19. Зависимость многопроектной библиотеки Maven
- 20. Maven не показывает библиотеки
- 21. Библиотеки Spring maven
- 22. Maven и родные библиотеки
- 23. Использование библиотеки Maven без питьевой Maven Koolaid
- 24. Установка библиотеки Maven с использованием SBT
- 25. Интеграция библиотеки архива Android с использованием Maven
- 26. Настройка библиотеки поддержки Android с maven
- 27. Включить библиотеки в EAR с Maven
- 28. Развертывание проекта библиотеки PHP с помощью Maven
- 29. Android безопасно использовать библиотеки github с maven
- 30. Основные библиотеки с плагином android maven
Хорошо, я полностью неверно истолковал ваш вопрос и пытался ответить на него тем временем ... и я даже не понимаю, что вы, должно быть, делали раньше? Я оставлю свой ответ, но не забудьте проигнорировать его. –
Я относительно новичок в Maven, таким образом, надзор. В Eclipse я использовал приложение lib, s как зависимость, а затем создавал и развертывал приложение. – BobBrez