it-swarm.com.ru

Как выполнить плагин maven дважды с другим свойством

Я хотел бы собрать из maven pom, выполняющего два последовательных выполнения одного и того же плагина, на одной и той же фазе, отличающихся только одним свойством, что приведет к созданию двух разных архивов. Поскольку конфигурация довольно сложная, я бы не стал копировать ее, чтобы просто изменить одно значение, что создаст кошмар обслуживания. Если бы было так или иначе возможно определить такое свойство в разделе <executions> конфигурации плагина, я мог бы избежать этой головной боли.

Вопрос : Возможно ли это и если да, то как?

Обновление : в двух ответах упоминается использование нескольких исполнений, и в одном из них упоминается, что в каждом исполнении можно иметь отдельные конфигурации. Но учитывая, что большая часть моей конфигурации постоянна между двумя исполнениями, могу ли я иметь одну конфигурацию на уровне плагина, а также иметь разделы конфигурации в каждом исполнении для разных частей?

14
Steve Cohen

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

<build>
    <plugins>
        <plugin>
            <groupId>org.Apache.maven.plugins</groupId>
            <artifactId>maven-source-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <includePom>true</includePom>
            </configuration>
            <executions>
                <execution>
                    <id>test-id1</id>
                    <phase>verify</phase>
                    <goals>
                        <goal>jar</goal>
                    </goals>
                    <configuration>
                        <finalName>aaa</finalName>
                    </configuration>
                </execution>
                <execution>
                    <id>test-id2</id>
                    <phase>verify</phase>
                    <goals>
                        <goal>jar</goal>
                    </goals>
                    <configuration>
                        <finalName>bbb</finalName>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

Запись конфигурации <includePom>true</includePom> в этом случае будет объединена с пользовательскими конфигурациями каждого выполнения и, как таковая, централизует общую конфигурацию как общую конфигурацию плагина. 

Для получения более подробной информации о различных уровнях конфигурации вы можете проверить официальную документацию Maven, здесь , в частности, пример «Настройка компиляции для запуска дважды». Более подробная информация также доступна в официальной документации POM, здесь , раздел плагинов.

15
A_Di-Matteo

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

Чтобы избежать дублирования конфигурации, вы можете поместить <configuration> вне элемента <execution>, а затем в двух исполнениях вы определяете только другое свойство.

Взято из maven документы :

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-myquery-plugin</artifactId>
        <version>1.0</version>
        <executions>
          <execution>
            <id>execution1</id>
            <phase>test</phase>
            <configuration>
              <url>http://www.foo.com/query</url>
              <timeout>10</timeout>
              <options>
                <option>one</option>
                <option>two</option>
                <option>three</option>
              </options>
            </configuration>
            <goals>
              <goal>query</goal>
            </goals>
          </execution>
          <execution>
            <id>execution2</id>
            <configuration>
              <url>http://www.bar.com/query</url>
              <timeout>15</timeout>
              <options>
                <option>four</option>
                <option>five</option>
                <option>six</option>
              </options>
            </configuration>
            <goals>
              <goal>query</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  ...
</project>
3
Augusto

Вы создаете два элемента <execute> в объявлении <plugin>. Каждый элемент <execute> может иметь свой собственный раздел <configuration>.

0
tdrury

Я хотел создать банку и положить в Zip-файл с другими файлами конфигурации Это сработало для меня 

	<plugin>
				<groupId>org.Apache.maven.plugins</groupId>
				<artifactId>maven-Assembly-plugin</artifactId>
				<version>2.4.1</version>
				<executions>
					<execution>
					<id>build-jar-with_dep1</id>
					 <phase>package</phase>
						<configuration>
							<descriptorRefs>
								<descriptorRef>jar-with-dependencies</descriptorRef>
							</descriptorRefs>
							<finalName>${buildversion}</finalName>
							<finalName>finalname</finalName>
							<appendAssemblyId>false</appendAssemblyId>
						</configuration>
						<goals>
	                        <goal>Assembly</goal>
	                    </goals>
					</execution>
					<execution>
					<id>build_Zip1</id>
					 <phase>package</phase>
						<configuration>
							<descriptor>src/Assembly/bin.xml</descriptor>
							<finalName>${buildversion}</finalName>
							<finalName>finalname</finalName>
							<appendAssemblyId>false</appendAssemblyId>
						</configuration>
						<goals>
	                        <goal>single</goal>
	                    </goals>
					</execution>
			
				</executions>
			</plugin>

0
user1620674