Maven-ear-plugin - за исключением нескольких модулей, т.е. банок, войн и т. д.

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

  <plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-ear-plugin</artifactId>
        <version>2.4.1</version>
        <configuration>
            <jboss>
                <version>5</version>
            </jboss>
            <modules>
                <!-- Include the templatecontroller.jar inside the ear -->
                    <jarModule>
                        <groupId>com.kewill.kdm</groupId>
                        <artifactId>templatecontroller</artifactId>
                        <bundleFileName>templatecontroller.jar</bundleFileName>
                        <includeInApplicationXml>true</includeInApplicationXml>
                    </jarModule>
                    <!-- Exclude the following classes from the ear -->
                    <jarModule>
                       <groupId>javax.activation</groupId>
                       <artifactId>activation</artifactId>
                       <excluded>true</excluded>
                    </jarModule>
                    <jarModule>
                   <groupId>antlr</groupId>
                   <artifactId>antlr</artifactId>
                   <excluded>true</excluded>
                </jarModule>
                ... declare multiple excludes
                <security>
                    <security-role id="SecurityRole_1234">
                        <role-name>admin</role-name>
                    </security-role>
                </security>
            </configuration>
        </plugin>
    </plugins>

Этот подход абсолютно удобен для небольших проектов, где вам нужно исключить, скажем, 4-5 модулей. Однако в моем проекте у меня 30+, и мы только начали проект, поэтому по мере его расширения это число, вероятно, будет расти.

Помимо явного объявления операторов исключения для каждого модуля, можно ли использовать подстановочные знаки или исключить все флаги зависимостей maven, чтобы включить только те модули, которые я объявляю, и исключить все остальное? Кто-нибудь знает более элегантное решение?


person James Murphy    schedule 16.03.2010    source источник


Ответы (3)


Помимо явного объявления операторов исключения для каждого модуля, можно ли использовать подстановочные знаки или исключить все флаги зависимостей maven, чтобы включить только те модули, которые я объявляю, и исключить все остальное?

maven-ear-plugin не не предоставляют эту функцию из коробки (и я не думаю, что это было бы легко настроить в любом случае, ухо должно быть упаковано очень точно). Однако здесь неясно, как получить зависимости, которые необходимо исключить. В зависимости от вашего ответа, может быть несколько способов справиться с ними:

  • Возможно, вы могли бы объявить некоторые из них необязательными, если они являются зависимостями от ваших артефактов, чтобы избежать их транзитивного извлечения.
  • Возможно, вы могли бы пометить некоторые зависимости как «предоставленные» (и поместить их в родительский pom, повторно объявить только то, что вы хотите, в POM EAR).

Хотя сложно ответить, не видя всей картины.

person Pascal Thivent    schedule 16.03.2010

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

Более того, вы можете отправить свое моджо команде maven (!)

person James B    schedule 16.03.2010
comment
Кстати, извините, это абсолютно типично для Stackoverflow: вы задаете конкретный вопрос, и кто-то публикует ответ, который вроде как связан, но это неизменно требует дополнительной работы! - person James B; 16.03.2010
comment
Кроме того, у меня есть небольшой пример кода для пользовательского моджо, если вы не получите никаких других ответов, которые дадут вам готовую конфигурацию. - person James B; 16.03.2010
comment
Я написал моджо раньше, я просто надеялся избежать этого, потому что, как обычно, у нас сжатые сроки ;) В любом случае, вы, вероятно, правы, плагин недостаточно продвинут, чтобы допускать подстановочные знаки или полное исключение других модулей. Скорее всего мне придется в итоге самому написать плагин. В настоящее время я просто вручную исключаю нужные мне модули. Спасибо. - person James Murphy; 16.03.2010

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

надеюсь это поможет!!!

person sunit    schedule 19.09.2013