Maven переименовывает файл после завершения всего остального

у меня есть проект, который мне нужно переименовать окончательный выходной файл, сгенерированный Maven Assembly Plugin после того, как все остальное завершится (в процессе компиляции/сборки/сборки).

на Maven Assembly Plugin генерирует final .zip файл, основанный на имени проекта, и мне нужно переименовать это полностью в final-version.oxt. Я пытаюсь использовать maven-antrun-plugin переименовать его, как указано другими подобными вопросами здесь, но не повезло (я никогда не использовал Maven или Ant раньше, поэтому, возможно, мне не хватает нечто.)

это <build> раздел проекта pom.xml. Часть переименования, похоже, полностью игнорируется, так как в my.

<build>
    <plugins>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.4</version>
            <executions>
                <execution>
                    <id>assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>attached</goal>
                    </goals>
                    <configuration>
                        <archive>
                            <manifestFile>src/main/resources/META-INF/MANIFEST.MF</manifestFile>
                        </archive>
                        <descriptors>
                            <descriptor>src/main/assembly/ooo-jar.xml</descriptor>
                            <descriptor>src/main/assembly/ooo.xml</descriptor>
                        </descriptors>
                    </configuration>
                </execution>
            </executions>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <executions>
                <execution>
                    <phase>deploy</phase>

                    <configuration>
                        <tasks>
                            <copy file="${project.build.directory}/target/libreofficeplugin-ooo.zip"
                             tofile="/home/brunofinger/final-version.oxt" />
                        </tasks>
                    </configuration>
                </execution>
            </executions>
        </plugin>

    </plugins>
</build>

3 ответов


несколько модификаций заставили его работать, наверное phase было неправильно, но с помощью <phase>install</phase> Кажется, это работает:

<plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>1.7</version>
            <executions>
                <execution>
                    <phase>install</phase>

                    <configuration>
                        <target>
                            <copy file="${project.build.directory}/libreofficeplugin-ooo.zip" tofile="${project.build.directory}/final-version.oxt" />
                        </target>
                    </configuration>
                    <goals>
                        <goal>run</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

этому вопросу почти год, но в случае, если кто-то еще сталкивается с подобной проблемой, вот альтернативное решение.

Если вы ищете более mavenish способ сделать это,вы можете использовать

 <plugin>
    <groupId>com.coderplus.maven.plugins</groupId>
    <artifactId>copy-rename-maven-plugin</artifactId>
    <version>1.0.1</version>
    <executions>
      <execution>
        <id>rename-file</id>
        <phase>install</phase>
        <goals>
          <goal>rename</goal>
        </goals>
        <configuration>
          <sourceFile>${project.build.outputDirectory}/libreofficeplugin-ooo.zip</sourceFile>
          <destinationFile>${project.build.outputDirectory}/final-version.oxt</destinationFile>
        </configuration>
      </execution>
    </executions>
  </plugin>

и если вы хотите скопировать вместо переименования, используйте скопировать цель вместо переименовать цель.


вам не нужно использовать antrun для переименования выходного файла. Просто используйте тег finalName плагина сборки, чтобы переименовать выходной файл.

<?xml version="1.0" encoding="UTF-8"?>
<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-assembly-plugin</artifactId>
   <version>2.4</version>
   <executions>
      <execution>
         <id>assembly</id>
         <phase>package</phase>
         <goals>
            <goal>attached</goal>
         </goals>
         <configuration>
            <archive>
               <manifestFile>src/main/resources/META-INF/MANIFEST.MF</manifestFile>
            </archive>
            <descriptors>
               <descriptor>src/main/assembly/ooo-jar.xml</descriptor>
               <descriptor>src/main/assembly/ooo.xml</descriptor>
            </descriptors>
            <finalName>final-version.oxt</finalName>
         </configuration>
      </execution>
   </executions>
</plugin>