Проблема интеграции docx4j с плагином JIRA

Я пытался интегрировать docx4j с пользовательским плагином JIRA, и у меня чертовски много времени. Первым подходом было добавить:

<dependency>
    <groupId>org.docx4j</groupId>
    <artifactId>docx4j</artifactId>
    <version>3.3.2</version>
</dependency>

к pom.xml файл. Плагин собран нормально, но развернут (через UPM) в отключенном состоянии и выдает предупреждение о недостающей функциональности. Я проверил журналы, и основная ошибка, казалось, была:

Caused by: org.osgi.framework.BundleException: Unresolved constraint in bundle <project_bundle> [233]: Unable to resolve 233.0: missing requirement [233.0] osgi.wiring.package; (osgi.wiring.package=com.google.appengine.api.images)
at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:3974)
at org.apache.felix.framework.Felix.startBundle(Felix.java:2037)
at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:955)
at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:942)
at com.atlassian.plugin.osgi.factory.OsgiPlugin.enableInternal(OsgiPlugin.java:400)

Это привело к кроличьей норе добавления исключений в Import-Package в instructions часть файла pom.xml для исправления неразрешенных ограничений. В конце концов я дошел до конца, а затем также изменил зависимость:

<dependency>
    <groupId>org.docx4j</groupId>
    <artifactId>docx4j</artifactId>
    <version>3.3.2</version>
    <exclusions>
        <exclusion>
            <artifactId>*</artifactId>
            <groupId>*</groupId>
        </exclusion>
    </exclusions>
</dependency>

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

У меня вопрос, есть ли у кого-то опыт интеграции docx4j с плагином JIRA или знаете, как устранить эти проблемы?

Я использую docx4j версии 3.3.2 и JIRA 7.1.7.

0 ответов

Наконец-то ДА.

    <dependencies>
        <dependency>
            <groupId>com.googlecode.jaxb-namespaceprefixmapper-interfaces</groupId>
            <artifactId>JAXBNamespacePrefixMapper</artifactId>
            <version>2.2.4</version>
        </dependency>
        <dependency>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>jaxb2-maven-plugin</artifactId>
            <version>2.2</version>
        </dependency>

        <dependency>
            <groupId>org.docx4j</groupId>
            <artifactId>docx4j</artifactId>
            <version>6.1.2</version>
        </dependency>

        <dependency>
            <groupId>com.fasterxml.woodstox</groupId>
            <artifactId>woodstox-core</artifactId>
            <version>5.0.2</version>
        </dependency>


        <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
            <version>2.1</version>
            <scope>provided</scope>
            <!--that provided REALLY matters-->
        </dependency>


        <dependency>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-impl</artifactId>
            <version>2.1.3</version>
            <scope>provided</scope>
            <!--along with that-->
        </dependency>
    </dependencies>

и импортные пакеты:

<!-- Add package import here -->
<Import-Package>
    org.springframework.osgi.*;version="0";resolution:=optional,
    org.eclipse.gemini.blueprint.*;resolution:="optional",
    org.docx4j*;resolution:="required",
    javax.ws.rs*;resolution:="required",
    javax.xml.bind*;resolution:="required",
    *;version="0";resolution:="optional"
</Import-Package>

И использование должно быть таким:

ClassLoader currentClassLoader = Thread.currentThread().getContextClassLoader();
Thread.currentThread().setContextClassLoader(ClassLoader.getSystemClassLoader());
try{
    //...different docx4j things
}finally{
    Thread.currentThread().setContextClassLoader(currentClassLoader);
}

Кроме того (теперь не знаю, имеет ли это значение, уверен, что это не так), jar-файл docx4j также добавляется в каталог JIRA /lib. Проблема заключалась в конфликте между docx4j и внутренним javax.xml JIRA - я экспериментировал с новым чистым плагином JIRA, содержащим только эту функциональность с docx4j - для управления только абсолютно необходимыми зависимостями

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

Другие вопросы по тегам