Как передать параметры в Java-файлы, используя pom.xml - PullRequest
0 голосов
/ 25 сентября 2019

Я хочу передать параметры из файла pom.xml в файлы java.

Я попытался установить свойства в pom.

Файлы java не прочитали их.

1 Ответ

1 голос
/ 25 сентября 2019

---- Вот 2-минутное введение в фильтрацию файлов ресурсов. ----

Сначала вам нужно указать, что вы хотите фильтровать свой ресурс, добавив элемент «filtering», содержащий «true»."value.

В этом примере я перенастроил каталог ресурсов по умолчанию:

<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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.edwinbuck.examples</groupId>
    <artifactId>template-value</artifactId>
    <version>1.0-SNAPSHOT</version>

    <name>Template example</name>
    <description>
A simple pom file that copies a value into a propertie file.
    </description>

    <licenses>
        <license>
            <name>The MIT License</name>
            <url>http://www.opensource.org/licenses/mit-license.php</url>
            <distribution>repo</distribution>
        </license>
    </licenses>

    <properties>
        <project.build.outputEncoding>UTF-8</project.build.outputEncoding>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.project.outputEncoding>UTF-8</project.project.outputEncoding>
        <property.to.be.copied>some-value</property.to.be.copied>
    </properties>

    <build>
        <resources>
            <resource>
              <directory>src/main/resources</directory>
              <filtering>true</filtering>
            </resource>
        </resources>
    </build>

</project>

Это означает, что каталог ресурсов по умолчанию существует, который (в соответствии с примером) должен быть на

${basedir}/src/main/resources

Внутри этого каталога должен быть ресурс (файл).В этом примере содержимое файла выглядит как

maven.build.number=${project.version}
customValue=${property.to.be.copied}

И файл называется

${basedir}/src/main/resources/example.properties

После mvn build это создаст копию файла в

${basedir}/target/classes/example.properties

, но содержимое файла в целевом каталоге будет

maven.build.number=1.0-SNAPSHOT
customValue=some-value

Я надеюсь, что этот пример (протестированный на Maven 3.5.4) предоставит вам достаточно шаблона для более эффективного использованиядокументации

Cheers!

---- Исходные сообщения следуют ----

Maven стремится иметь воспроизводимые сборки.Это означает, что если для сборки требуется ввод, вам придется каждый раз предоставлять один и тот же ввод для правильного воспроизведения.

Фактически этого не произойдет, поскольку вы можете быть недоступны или не набирать текст.в том же пункте.Итак, я бы посмотрел в каталог src / main / resources и создал файл свойств.Поместите туда настройки, а затем переписайте свою программу, чтобы использовать оттуда настройки.

При чтении файла свойств существует ряд опций.Посмотрите на технику, которая загружает файл свойств из ClassLoader, так как именно этот подход обеспечивает лучшую поддержку и предлагает большую гибкость при размещении файла свойств.

В случае, если вы хотитеДля поддержки более чем одного вида сборки, и все сборки могут быть выполнены без участия человека, вы можете создать профиль maven для каждой сборки.Тем не менее, каждый профиль по-прежнему будет воспроизводимой сборкой.

--- Я вижу, вы изменили свою формулировку, вот обновление ---

Используйте шаблон, а копию -цель ресурсов для плагина ресурсов.Вы можете использовать его для замены элементов в ресурсах по мере их перемещения в целевой каталог

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