Ответы пользователя по тегу Maven
  • Как организовать monorepo с привязкой к версии maven?

    Vamp
    @Vamp
    Вы можете собрать весь проект целиком, тогда в maven reactor будут добавлены сразу все модули и dependency resolver сможет разобраться в зависимостях от соседних модулей. Но если собирать один конкретный модуль, то мавен уже не разберётся и полезет во внешние репозитории. В таком случае необходимо передать дополнительный ключ -am (--also-make):

    mvn -am -pl модуль package
    Ответ написан
    Комментировать
  • Как сделать свою mvn dependency?

    Vamp
    @Vamp
    Для этого нужно создать maven project. В pom.xml этого проекта прописать group, artifact и version. Затем собрать проект командой mvn install

    Maven скомпилирует код вашего проекта, упакует в jar и скопирует этот jar вместе с pom.xml в ваш локальный maven репозиторий.

    Далее в другом проекте подключаете свою зависимость как любую другую зависимость, указывая group, artifact и version, которые прописали ранее.
    Ответ написан
    Комментировать
  • Как ограничить область действия зависимостей?

    Vamp
    @Vamp
    Лучше всего форкнуть проект библиотеки и переписать код на spring 5. Возможно это будет не слишком трудоёмко, учитывая, что зависимость от spring у библиотеки транзитивная. То есть в коде библиотеки может и не быть кода, зависящего от spring, поэтому может быть достаточно обновить только версию непосредственной зависимости, которая уже тащит spring.

    Альтернативным вариантом является использование maven-shade-plugin. Этот плагин упаковывает зависимости проекта в единый jar файл и, опционально, может перемещать классы в другой пакет. Фича называется class relocation. То есть вы можете собрать shaded версию библиотеки soap-ws, у которой классы spring будут релоцированы из пакета org.springframework в, например, vildaraj.shaded.org.springframework. В этом случае вы можете в основном проекте использовать какую угодно версию spring без конфликтов.
    Ответ написан
    Комментировать
  • Как настроить Maven на копирование во время сборки?

    Vamp
    @Vamp
    Это делается при помощи плагинов. Вот на выбор antrun и maven-resources-plugin:
    <build>
        <plugins>
            <plugin>
                <artifactId>maven-antrun-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>validate</phase>
                        <configuration>
                            <tasks>
                                <copy todir="${project.basedir}/target/jfx/speedmap">
                                    <fileset dir="/home/fluent/mapGr"/>
                                </copy>
                            </tasks>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
    
            <plugin>
                <artifactId>maven-resources-plugin</artifactId>
                <version>3.0.1</version>
                <executions>
                    <execution>
                        <id>copy-resources-foreign</id>
                        <phase>validate</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.basedir}/target/jfx/speedmap</outputDirectory>
                            <resources>
                                <resource>
                                    <directory>/home/fluent/mapGr</directory>
                                </resource>
                            </resources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>


    Есть директории, лежащие вне Java -проекта. Это не ресурсы (их надо копировать в директорию, отличную от target\classes).

    В вашем случае это всё-таки ресурсы. Просто по умолчанию maven считает ресурсами только контент из директорий src/main/resources и src/test/resources. Вам просто нужно сказать где ещё располагаются ресурсы, необходимые для сборки проекта.

    Вообще говоря, не очень хорошо завязываться на внешние по отношению к проекту ресурсы. Это усложняет вхождение новых участников, так как теперь уже недостаточно просто запустить mvn install и получить готовый артефакт. Да и сами потом забудете/запутаетесь, будете тратить время на вспоминание как правильно собирать проект. Хотя, конечно, хозяин - барин.
    Ответ написан
    1 комментарий