Maven ejb -исключение зависимости генерации клиента

У нас есть решение, в котором наши проекты пользовательского интерфейса включают довольно много бизнес-сервисов с использованием клиентских зависимостей EJB. Проблема с этим в Maven заключается в том, что хотя клиентский.jar обычно содержит около 1 -2 классов, они несут с собой полный стек зависимостей всего приложения-службы. Это может стать немного уродливым, когда файлы.ear начинают расти до 50 -100 МБ за раз и время от времени появляются надоедливые ошибки из-за нерелевантных зависимостей, проникающих в приложение пользовательского интерфейса.

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

Пример:

        <dependency>
            <groupId>fi.path.to.service</groupId>
            <artifactId>customermanagement-common</artifactId>
            <version>2.6</version>
        </dependency>
        <dependency>
            <groupId>fi.path.to.service</groupId>
            <artifactId>customermanagement-service</artifactId>
            <classifier>client</classifier>
            <exclusions>
                <exclusion>
                    <groupId>fi.path.to.dependency</groupId>
                    <artifactId>internal-dependency-#1</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.codehaus.castor</groupId>
                    <artifactId>castor</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>fi.path.to.dependency</groupId>
                    <artifactId>internal-dependency-#2</artifactId>
                </exclusion>
                <exclusion>
                    <artifactId>internal-dependency-#3</artifactId>
                    <groupId>fi.path.to.dependency</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>internal-dependency-#4</artifactId>
                    <groupId>fi.path.to.dependency</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>internal-dependency-#5</artifactId>
                    <groupId>fi.path.to.dependency</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>castor-xml</artifactId>
                    <groupId>org.codehaus.castor</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>castor-codegen</artifactId>
                    <groupId>org.codehaus.castor</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>castor-xml-schema</artifactId>
                    <groupId>org.codehaus.castor</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>internal-dependency-#6</artifactId>
                    <groupId>fi.path.to.dependency</groupId>
                </exclusion>
            </exclusions>
            <version>2.6</version>
        </dependency>

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

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

Поэтому я знаю, что можно исключить/включить классы из ejb-клиента во время его генерации с помощью спецификаций pom.xml в плагине maven -ejb -, но есть ли способ также исключить зависимости?

6
задан Roman C 17 March 2016 в 20:31
поделиться