Знаток assembly:assembly

Я полностью согласен с ответом Конамимана , но я хотел бы добавить одну вещь:

Есть случаи, когда вы действительно не хотите эту абстракцию , И это нормально.

Простой пример, который я хотел бы использовать здесь, - это класс для трехмерного вектора с плавающей точкой:

class Vector3f {
public:
    float x;
    float y;
    float z;
};

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

Теперь вы можете легко создавать сценарии, в которых это может укусить вас позже. Например, однажды вы можете получить требование, чтобы Vector3f не разрешалось хранить NaN, и должно выдавать исключение, если кто-то пытается это сделать. Но такой гипотетической проблемы будущего не должно быть достаточно, чтобы оправдать введение дополнительных абстракций.

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

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

7
задан matt b 12 June 2009 в 19:23
поделиться

2 ответа

Я не уверен, но у меня есть подозрение. Вы определяете assembly: single как часть фазы пакета и определяете дескриптор в элементе выполнения. Это может означать, что плагин не знает, где искать дескриптор при запуске сборки: сборка. Попробуйте скопировать элемент за пределы элемента .

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

<plugin>
  <artifactId>maven-assembly-plugin</artifactId>
  <version>2.1</version> 
  <configuration>
    <finalName>myJar</finalName>
    <descriptors>
      <descriptor>src/main/config/descriptor.xml</descriptor>
    </descriptors>
    <archive>
      <manifest>
        <mainClass>org.foo.Bar</mainClass>
      </manifest>
    </archive>
  </configuration>
</plugin> 

Примечание src / main / config не является стандартным путем Maven, но я не определил какой-либо специальной обработки его.

7
ответ дан 7 December 2019 в 07:50
поделиться

Где у вас файл assembly.xml? Рабочий каталог Maven - это каталог модуля (тот, который содержит pom.xml). Если ваш assembly.xml не находится в том же каталоге, что и pom.xml, вы должны указать путь

0
ответ дан 7 December 2019 в 07:50
поделиться
Другие вопросы по тегам:

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