Каковы лучшие практики для именования модулей Maven?

Нет, это не будет сбор мусора, см. Javadoc :

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

blockquote>

Как уже упоминалось @biziclop одним из решений было бы хранить слабую ссылку на ключ в вашем объекте value.

public class Value { 
  final public WeakReference key;
  public Value(Key k) {
    this.key = new WeakReference(k);
  }
}

16
задан Pascal Thivent 18 August 2010 в 14:36
поделиться

3 ответа

Я написал несколько заметок по этому поводу в книге «Эффективная реализация», но там нет никаких правил или канонических соглашений.

Подводя итог:

Прежде всего, самое важное - это то, что вы последовательны.

В общем соглашении Maven в качестве разделителя используется символ «-» ( commons-lang , maven-model ).

Если вы собираетесь использовать его извне, запомните module = artifact ID = filename (в лучшем случае), поэтому он должен быть узнаваемым ( maven-model-2.0.jar ясен, model-2.0.jar нет). В этом случае вы обычно повторяете последний элемент идентификатора группы как мини-пространство имен. «Внутренние» модули могут опускать его для краткости (как показано в примере приложения: http://github.com/brettporter/centrepoint/tree/master/centrepoint/modules/ ).

Кроме того, я бы сделал их как можно короче.

Вы можете провести параллель между соглашениями об именовании пакетов Java и классов с идентификаторами групп и артефактов Maven.

22
ответ дан 30 November 2019 в 21:02
поделиться

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

- root
    - api
    - impl
    - security
    - service-soap
    - service-rest
    - client-swing
    - client-web-html
    - client-web-mobile

Я бы вложил вещи дальше:

- root
    - api
    - impl
    - security
    - service
        - soap
        - rest
    - client
        - swing
        - web
            - html
            - mobile

с помощью параметров реактора maven вы все равно можете создавать вложенные модули, изолированные сверху:

mvn -pl client/web clean install
5
ответ дан 30 November 2019 в 21:02
поделиться

Вы можете пойти еще дальше:

-- project
  -- project-module-1
  -- project-module-2

Без шуток, это действительно вопрос вкуса.

Доброго времени суток, Максим

2
ответ дан 30 November 2019 в 21:02
поделиться
Другие вопросы по тегам:

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