Вакансия: младший Java программист
Небольшой компании разработчику ПО
требуется младший Java программист
Москва, м. Партизанская/ МЦК Окружная подробнее






Клуб Java разработчиков
Обсуждение интересных технологий
и новинок для Java разработчиков.
Москва, м. Партизанская подробнее





Свойства

Для того чтобы можно было легче писать и настраивать проект в pom.xml можно использовать свойства. Можно рассматривать свойства просто как переменные.

Есть:

  1. Переменные объявленные внутри pom.xml
  2. Предопределённые переменные.
  3. Переменные объявленные во внешнем файле

Переменные объявленные внутри pom.xml

Давайте начнём с самого простого объявим свойства и сами будем их использовать. Свойства можно объявить и использовать так:

                    
    <properties>                             
        <temp.directory>/tmp</temp.directory>
    </properties>
    <build>
    <outputDirectory>${temp.directory}<outputDirectory>

                    
                

Свойства помогают избавиться от дублирования информации В примере

                    
        <properties>
            <jetty.version>6.1.25</jetty.version>
        </properties>
        <dependency>
            <groupId>org.mortbay.jetty</groupId>
            <artifactId>jetty</artifactId>
            <version>${jetty.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.mortbay.jetty</groupId>
            <artifactId>jetty-util</artifactId>
            <version>${jetty.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.mortbay.jetty</groupId>
            <artifactId>jetty-management</artifactId>
            <version>${jetty.version}</version>
            <scope>provided</scope>
        </dependency>
                            
                
использование свойства jetty.version позволяет избавиться от дублирования и уменьшет вероятность ошибок при апгрейде.

Предопределёные переменные

Предопределённые переменные можно разделить на несколько видов.

Встроенные свойства

  • ${basedir}
  • директория где лежит pom.xml
  • ${version}
  • тоже самое что и ${project.version} или ${pom.version}

Свойства проекта На все свойства в pom.xml, можно сослаться с помощью префиксов project. или pom. Ниже приведён пример некоторых часто используемых элементов.

  • ${project.build.directory}
  • ваша "target" директория,или тоже самое
  • ${pom.project.build.directory}
  • ${project.build.outputDirectory}
  • путь к директории куда компилятор складывает файлы по умолчанию "target/classes"
  • ${project.name}
  • или ${pom.name} имя Вашего проекта
  • ${project.version}
  • или ${pom.version} версия Вашего проекта.

Настройки пользователя Можно получить доступ к свойствам settings.xml с помощью префикса settings. ,например:

  • ${settings.localRepository} путь к локальному репозиторию пользователя.

Переменные окружения Для доступа к переменным окружения используйте префикс env. Примеры:

  • ${env.M2_HOME}
  • путь .
  • ${java.home}
  • specifies the path to the current JRE_HOME environment use with relative paths to get for example: <jvm>${java.home}../bin/java.exe</jvm>

Системные свойства System.properties Доступ к системным свойствам возможен напрямую. Для просмотра переменных можно воспользоваться maven-echo-plugin.

Переменные объявленные во внешнем файле

Для того чтобы загрузить переменные из внешнего файла удобнее всего использовать maven-properties-plugin Давайте рассмотрим его работу.
                
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>maven-properties-plugin</artifactId>
                <version>1.0-SNAPSHOT</version>
                <executions>
                    <execution>
                        <phase>initialize</phase>
                        <goals>
                            <goal>read-project-properties</goal>
                        </goals>
                        <configuration>
                            <files>
                                <file>src/config/app.properties</file>
                            </files>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
                            
            
В данном примере объявляется плагин, он отрабатывает на стадии initialize и загружает свойства из src/config/app.properties.






blog comments powered by Disqus