Как исключить код зависимости GWT из пакета OSGI, сгенерированного MAven + BND? - PullRequest
0 голосов
/ 10 сентября 2011

У меня есть несколько модулей Maven с зависимостью от библиотеки Vaadin в корневом файле pom.xml.

Я пытаюсь создать набор пакетов OSGI (1 на модуль Maven), используя Maven + BND.

Я добавил это в свой «корневой» файл pom.xml:

    <dependencies>
    <dependency>
        <groupId>com.vaadin</groupId>
        <artifactId>vaadin</artifactId>
        <version>6.6.6</version>
    </dependency>
    <dependency>
        <groupId>com.google.gwt</groupId>
        <artifactId>gwt-user</artifactId>
        <version>2.3.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.felix</groupId>
        <artifactId>org.osgi.core</artifactId>
        <version>1.0.0</version>
    </dependency>
    </dependencies>

К сожалению, в результате JAR-файлы (комплекты) включают классы GWT (com.google.gwt).Это 1) делает пакеты огромными, с множеством дублированных зависимостей.2) сгенерировал тысячи предупреждений о сборке о «разделенных пакетах».

ВОПРОС: как предотвратить добавление классов GWT в мои Jar-файлы?

Я попытался установить "scope" GWT на "условии", установка «type» в «bundle» и даже необязательный = true - не помогло.

вот часть моего корневого pom.xml, который отвечает за содержимое Vaadin / GWT:

    <plugins>
        <plugin>
            <groupId>org.apache.felix</groupId>
            <artifactId>maven-bundle-plugin</artifactId>
            <version>2.3.5</version>
            <extensions>true</extensions>
            <configuration>
                <instructions>
                    <Export-Package>mycompany.*</Export-Package>
                    <Private-Package>*.impl.*</Private-Package>
                    <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
                    <!--                        <Bundle-Activator>com.alskor.publicpackage.MyActivator</Bundle-Activator>-->
                </instructions>
            </configuration>
        </plugin>
        <!-- Compiles your custom GWT components with the GWT compiler -->
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>gwt-maven-plugin</artifactId>
            <!-- Version 2.1.0-1 works at least with Vaadin 6.5 -->
            <version>2.3.0-1</version>
            <configuration>
                <!-- if you don't specify any modules, the plugin will find them -->
                <!--modules>
                    ..
                </modules-->
                <webappDirectory>${project.build.directory}/${project.build.finalName}/VAADIN/widgetsets
                </webappDirectory>
                <extraJvmArgs>-Xmx512M -Xss1024k</extraJvmArgs>
                <runTarget>clean</runTarget>
                <hostedWebapp>${project.build.directory}/${project.build.finalName}</hostedWebapp>
                <noServer>true</noServer>
                <port>8080</port>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>resources</goal>
                        <goal>compile</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <!-- Updates Vaadin 6.2+ widgetset definitions based on project dependencies -->
        <plugin>
            <groupId>com.vaadin</groupId>
            <artifactId>vaadin-maven-plugin</artifactId>
            <version>1.0.1</version>
            <executions>
                <execution>
                    <configuration>
                        <!-- if you don't specify any modules, the plugin will find them -->
                        <!--
                        <modules>
                            <module>${package}.gwt.MyWidgetSet</module>
                        </modules>
                        -->
                    </configuration>
                    <goals>
                        <goal>update-widgetset</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>

Ответы [ 3 ]

2 голосов
/ 10 сентября 2011

Подстановочные знаки в ваших утверждениях Export-Package и Private-Package кажутся мне чрезвычайно опасными. Возможно, что пакеты GWT перетаскиваются из-за шаблона *.impl.* в Private-Package.

Также вам следует никогда использовать подстановочные знаки в пакете экспорта: экспорт должен строго контролироваться и иметь версии.

0 голосов
/ 01 мая 2019

У меня была похожая проблема, так как окончательный файл войны превысил почти 90 МБ!Одним из виновников был вышеупомянутый кувшин, поэтому я сделал это:

<dependencies>
    <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>widgetset</artifactId>
        <version>3.2</version>
        <exclusions>
            <exclusion>
                <groupId>com.vaadin.external.gwt</groupId>
                <artifactId>gwt-user</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    ...
</dependencies>
0 голосов
/ 10 сентября 2011
  1. используйте mvn dependency: tree, чтобы увидеть, откуда берется зависимость gwt
  2. Добавьте элемент <excludes/> с соответствующим <exclude/> к рассматриваемой зависимости, чтобы подавить ее.
...