Как добавить вычисляемое свойство в проект Maven с помощью плагина? - PullRequest
3 голосов
/ 23 октября 2009

Я написал плагин Maven для захвата IP-адреса компьютера и хотел бы иметь возможность создать свойство для фильтрации IP-адреса в файл (через $ {ipaddress}) при генерации архетипа.

Я не смог найти, как это сделать. Кто-нибудь знает?

Ответы [ 3 ]

2 голосов
/ 22 марта 2010

Вы можете использовать плагин org.codehaus.groovy.maven, чтобы получить IP и установить его в реквизит. В моем примере я установил извлеченный IP для свойства localIP, и он будет доступен на следующих этапах, как и любой другой реквизит maven, то есть как $ {localIP}.

                 <plugin>
                    <groupId>org.codehaus.groovy.maven</groupId>
                    <artifactId>gmaven-plugin</artifactId>
                    <version>1.0</version>
                    <executions>
                      <execution>
                        <id>get-local-ip</id>
                        <phase>initialize</phase>
                        <goals>
                          <goal>execute</goal>
                        </goals>
                        <configuration>
                          <classpath>
                            <element>
                              <groupId>commons-lang</groupId>
                              <artifactId>commons-lang</artifactId>
                              <version>2.4</version>
                             </element>
                          </classpath>
                          <source>
                              java.net.InetAddress address=InetAddress.getByName("${env.COMPUTERNAME}");
                              project.properties.localIP=address.getHostAddress();
                          </source>
                        </configuration>
                      </execution>
                    </executions>
                </plugin>
1 голос
/ 24 октября 2009

properties-maven-plugin считывает свойства из файла и делает их доступными для сборки, как если бы они были определены встроенными.

Вы можете либо сделать так, чтобы ваш плагин выводил ip в файл, а затем использовать плагин свойств для его чтения, либо прижать source из плагина свойств, чтобы установить свойство в своем собственном плагине.

По сути, вы просто получаете свойства из MavenProject и добавляете свои собственные записи.

0 голосов
/ 23 октября 2009

Ну, проблема в том, что ваши свойства обрабатываются до , когда вы запускаете сборку, и не могут быть перезаписаны во время сборки. По крайней мере, таков мой опыт, и я бы хотел, чтобы его ошиблись и даже приняли за это отрицательные моменты :) Так что одна возможность - создать скрипт, который запускает вашу программу, заполняет системное свойство и затем запускает mvn build сразу после (я знаю, это уродливо)

...