将依赖关系dll导出为导致的战争

时间:2015-08-24 15:28:45

标签: java dll maven-2

我有一个使用jMUPdf库作为外部依赖项的Java Web项目。由于我无法在任何公共maven存储库中找到jMUPdf,我尝试使用install-file将其安装到我的本地m2存储库

jMUPdf使用jmupdf.jar和依赖的jmupdf64.dll,所以我这样做了:

mvn install:install-file -Dfile=jmupdf.jar -DgroupId=jmupdf -DartifactId=jmupdf -Dversion=0.4.1 -Dpackaging=jar

mvn install:install-file -Dfile=jmupdf64.dll -DgroupId=jmupdf -DartifactId=jmupdfdll64 -Dversion=0.4.1 -Dpackaging=dll

我可以在我的本地m2存储库中看到两个库。

这是我的pom.xml

的摘录
    <dependency>
        <groupId>jmupdf</groupId>
        <artifactId>jmupdfdll64</artifactId>
        <version>0.4.1</version>
        <scope>runtime</scope>
        <type>dll</type>
    </dependency>
    <dependency>
        <groupId>jmupdf</groupId>
        <artifactId>jmupdf</artifactId>
        <version>0.4.1</version>
    </dependency>

但是:在编译我的项目(生成war文件)之后,我只看到\ WEB-INF \ lib中的jmupdf.jar,并且缺少DLL。这当然是关于丢失的jmupdf64.dll

的运行时异常的原因

如何确保dll是生成的war文件的一部分?

编辑:...它也将正确部署(例如我的Tomcat上的webapps / MYAPP / WEB-INF / lib)?

1 个答案:

答案 0 :(得分:0)

这是我使用 ms-jdbc 实现集成安全性需求的简单解决方案...

    <dependencies>
    <dependency>
        <groupId>com.microsoft.sqlserver</groupId>
        <artifactId>mssql-jdbc_auth</artifactId>
        <version>8.4.1.x64</version>
        <type>dll</type>
        <scope>runtime</scope>
    </dependency>

    <dependency>
        <groupId>com.microsoft.sqlserver</groupId>
        <artifactId>mssql-jdbc</artifactId>
        <version>8.4.1.jre14</version>
    </dependency>
</dependencies>
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>3.1.1</version>
            <executions>
                <execution>
                    <id>copy-dependencies</id>
                    <phase>prepare-package</phase>
                    <goals>
                        <goal>copy-dependencies</goal>
                    </goals>
                    <configuration>
                        <excludeScope>provided</excludeScope>
                        <includeTypes>dll</includeTypes>
                        <overWriteIfNewer>true</overWriteIfNewer>
                        <outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/lib</outputDirectory>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>