Maven не создает файл .class в целевом каталоге

Я создаю пакет osgi с помощью плагина пакета maven в eclipse. В моем приложении у меня есть файл jar без maven, от которого зависит большинство классов java в моем приложении. мой файл pom.xml выглядит следующим образом.

<build>
    ...

    <plugins>
        ....

        <plugin>
            <groupId>org.apache.felix</groupId>
            <artifactId>maven-bundle-plugin</artifactId>
            <version>2.2.0</version>
            <extensions>true</extensions>
            <configuration>
                <instructions>
                    <Bundle-Activator>org.myapp.Activator</Bundle-Activator>
                    <Include-Resource>a1.jar=${basedir}/src/main/java/lib/a1.jar,a2.jar=${basedir}/src/main/java/lib/a2.jar,a3.jar=${basedir}/src/main/java/lib/a3.jar</Include-Resource>
                    <Bundle-ClassPath>.,${basedir}/src/main/java/lib/a1.jar,${basedir}/src/main/java/lib/a2.jar,${basedir}/src/main/java/lib/a3.jar</Bundle-ClassPath>

                </instructions>
            </configuration>
        </plugin>
        <!-- Maven Compiler plugin -->
        <plugin>
            <inherited>true</inherited>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.1</version>
            <configuration>
                <includes>
                    <include>${project.basedir}/src/main/java/**</include>
                </includes>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>

        ....

    </plugins>
</build>

Используя это, я могу успешно собрать свое приложение, и мой окончательный пакет jar также содержит все необходимые файлы jar, но проблема в том, что в финальном пакете нет файла .class, и мой целевой каталог также не содержит никакого файла .class.

Если я удалю тег includes из плагина maven-compiler-plugin, я получу ошибку класса не существует.

Поэтому, пожалуйста, скажите мне, в чем проблема с приведенным выше кодом, который не создает файлы .class в целевом каталоге, а также в окончательном пакете.


person ppb    schedule 26.09.2012    source источник
comment
Вы должны попытаться начать с очень простого pom, который работает, а затем расширить его, проверяя его после каждого шага. Таким образом, вы в конечном итоге найдете проблему.   -  person Björn Pollex    schedule 27.09.2012
comment
OK. Я создал образец проекта osgi-archetype в eclipse только с классом Activator и его успешной сборкой, но затем, когда я добавляю import com.abc.pqr, и этот пакет находится в другом пользовательском файле jar, отличном от maven, тогда Я получил ошибку пакет не существует. После этого я устанавливаю свой пользовательский файл jar с помощью mvn install:install-file и добавляю зависимость также в pom.xml и снова собираю приложение, но все равно получаю ту же ошибку пакет не существует. Так в чем проблема.   -  person ppb    schedule 27.09.2012
comment
В какой момент вы получаете ошибку? Можете ли вы опубликовать точное сообщение об ошибке, которое вы получаете? Вы уверены, что банка, на которую вы ссылаетесь, действительно содержит пакет? Пожалуйста, не публикуйте эту информацию в комментарии, а отредактируйте ее в своем вопросе.   -  person Björn Pollex    schedule 28.09.2012


Ответы (1)


Ваше объяснение не очень понятно, вы так говорите

содержит все необходимые файлы jar

Однако потом вы говорите

в финальном комплекте нет файла .class

Таким образом, он не содержит всех необходимых файлов jar. Сказав это, вам, похоже, не хватает ключевых директив export-package и private-package BND. Ознакомьтесь с документацией подключаемого модуля пакета maven здесь

person Hilikus    schedule 14.01.2013