1

我想将 *.dlls 作为第三方库添加到我的存储库中,并且在打包过程中只需将它们打包到 *.jar,对其进行签名并复制到某个特定文件夹。


签名和应对都做得很好并且可以正常工作(正如使用 maven-dependency-plugin 和 maven-jarsigner-plugin 所期望的那样)。但是我没有找到任何方法可以自动将单个 dll 打包到 jar 中(没有像 maven-assembly-plugin 这样的任何来源)。


我当时看到的解决方案:添加到我的存储库不是“纯”dll,而是已经打包到 jar lib(由我自己打包)......但这不是一个好主意,我猜)

4

2 回答 2

1

我建议通过 maven-assembly-plugin 将您的 dll 打包为 zip 存档,并让该模块将 zip 存档部署为附加到您通常的 pom.xml 文件中。该项目的包装应该是 pom 而不是默认的。如果我下载一个 jar 并在其中找到 dll,我会有点困惑,但如果您愿意,您可以通过 maven-assembly-plugin 或使用 maven-jar-plugin 创建 jar。

于 2012-04-17T12:51:30.693 回答
1

听起来您已经成功检索了您的 .dll(带有依赖插件)并对其进行了签名(jarsigner 插件),并且它位于您的某个位置${project.build.directory}(默认为target)。

如果这是正确的,试试这个:

  • 将项目的定义packagingjar
  • 检索 dll
  • 确保jarsigner:sign目标绑定到prepare-package阶段。它默认绑定到package,我们需要确保jarsigner:signjar:jar.

    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jarsigner-plugin</artifactId>
    <version>1.2</version>
    <executions>
      <execution>
        <id>sign</id>
        <phase>prepare-package</phase>       <!-- important -->
        <goals>
          <goal>sign</goal>
        </goals>
      </execution>
    </executions>
    </plugin>
    
  • 配置jar插件以包含签名的 dll

    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.4</version>
    <executions>
      <execution>
        <!-- using this ID merges this config with default -->
        <!-- So it should not be necessary to specify phase or goals -->
        <!-- Change classes directory because it will look in target/classes 
             by default and that probably isn't where your dlls are.  If
             the dlls are in target then directoryContainingSignedDlls is
             simply ${project.build.directory}. -->
        <id>default-jar</id>   
        <configuration>
          <classesDirectory>directoryContainingSignedDlls</classesDirectory>
          <includes>
            <include>**/*.dll</include>
          </includes>
        </configuration>
      </execution>
    </executions>
    </plugin>
    
  • 现在,运行mvn clean package应该会给你一个包含你签名的 dll 的 jar。

  • 如果 JACOB 需要清单配置,则有文档解释如何执行此操作。

祝你好运!

于 2012-04-18T04:00:04.057 回答