无法将docx4j与JIRA插件集成

时间:2017-02-10 14:14:40

标签: maven jira jira-plugin docx4j

我一直在尝试将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)

这导致了一个漏洞,即在pom.xml的Import-Package部分中向instructions添加排除项以修复未解决的约束。我最终到了最后,然后也将依赖关系更改为:

<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。

1 个答案:

答案 0 :(得分:1)

最后,是。

    <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);
}

此外(现在不知道它是否有关系,很确定没有关系),docx4j jar也已添加到JIRA的/ lib目录中。问题出在docx4j和JIRA的内部javax.xml之间发生冲突-我已经试验了新的纯JIRA插件,仅包含docx4j的功能-仅管理绝对必要的依赖项

最初的答案当然为时已晚,但我希望这可能对其他人有所帮助。

相关问题