Действительно ли возможно переименовать банку с зависимостями знатока?

В качестве обходного пути я разделил Department сущность на Department и DepartmentWithParents. Я добавил метод Department getParents() к сущности DepartmentWithParents и открыл метод REST API, который возвращает DepartmentWithParents.

124
задан Karl the Pagan 8 March 2011 в 20:12
поделиться

3 ответа

Вы можете укажите свойство finalName , чтобы дать банке желаемое имя, и укажите, что appendAssemblyId должно быть ложным, чтобы избежать суффикса «jar-with-dependencies».

Конфигурация ниже выведет банку под названием "test.jar"

<plugin>
  <artifactId>maven-assembly-plugin</artifactId>
  <version>2.2-beta-4</version>
  <executions>
    <execution>
      <id>jar-with-dependencies</id>
      <phase>package</phase>
      <goals>
        <goal>single</goal>
      </goals>
      <configuration>
        <descriptorRefs>
          <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
        <finalName>test</finalName>
        <appendAssemblyId>false</appendAssemblyId>
      </configuration>
    </execution>
  </executions>
</plugin>

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

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

В этом примере идентификатор сборки будет добавлен к finalName, поэтому, если вам нужно иметь имя region-full.jar , вы можете указать finalName как область и идентификатор сборки как полный . Это приведет к созданию в целевой папке файла с именем region-full.jar, но обратите внимание, что он все равно будет установлен в репозиторий Maven как прикрепленный артефакт с full , используемым в качестве классификатора. Пока этот идентификатор отличается от идентификатора другой сборки, столкновения не должно быть.

Конфигурация pom будет выглядеть так.

<plugin>
  <artifactId>maven-assembly-plugin</artifactId>
  <version>2.2-beta-4</version>
  <executions>
    <execution>
      <id>jar-with-dependencies</id>
      <phase>prepare-package</phase>
      <goals>
        <goal>single</goal>
      </goals>
      <configuration>
        <descriptors>
          <descriptor>src/main/assembly/jar-assembly.xml</descriptor>
        </descriptors>
        <finalName>region</finalName>
      </configuration>
    </execution>
  </executions>
</plugin>

и jar-assembly.xml в src / main / assembly следующим образом:

<assembly>
  <id>full</id>
  <formats>
    <format>jar</format>
  </formats>
  <includeBaseDirectory>false</includeBaseDirectory>
  <dependencySets>
    <dependencySet>
      <unpack>true</unpack>
      <scope>runtime</scope>
    </dependencySet>
  </dependencySets>
  <fileSets>
    <fileSet>
      <directory>${project.build.outputDirectory}</directory>
    </fileSet>
  </fileSets>
</assembly>
214
ответ дан 24 November 2019 в 01:06
поделиться

Также возможно перезаписать исходный файл банки при помощи ${project.build.finalName} как заключительное имя:

<plugin>
  <artifactId>maven-assembly-plugin</artifactId>
   <executions>
      <execution>
          <phase>package</phase>
          <goals>
             <goal>single</goal>
          </goals>
      </execution>
   </executions>
   <configuration>
     <descriptorRefs>
       <descriptorRef>jar-with-dependencies</descriptorRef>
     </descriptorRefs>
     <finalName>${project.build.finalName}</finalName>
     <appendAssemblyId>false</appendAssemblyId>
   </configuration>
 </plugin>
1
ответ дан Mark Schäfer 24 November 2019 в 01:06
поделиться

Я собираюсь отдать должное Ричу за то, что он указал мне в правильном направлении, но хотел опубликовать решение, которое сработало для меня, поскольку решение Рича было немного не так:

Моя сборка jar .xml выглядел так, что позволяло изменять идентификатор сборки для области, которая хранилась как свойство в моем профиле:

<assembly>
  <id>${env}-full</id>
    <formats>
      <format>jar</format>
    </formats>
    <includeBaseDirectory>false</includeBaseDirectory>
    <dependencySets>
      <dependencySet>
        <unpack>true</unpack>
        <scope>runtime</scope>
      </dependencySet>
    </dependencySets>
    <fileSets>
      <fileSet>
        <directory>${project.build.outputDirectory}</directory>
      </fileSet>
    </fileSets>
</assembly>

Я не использовал параметр finalName в настройках maven-assembly-plugin, так как он построил мой проект с моими имя-проекта-версия-env-full.jar имя, где env-full был классификатором.

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

3
ответ дан 24 November 2019 в 01:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: