1

*.dll をサードパーティのライブラリとしてリポジトリに追加し、パッケージ化プロセス中に *.jar にパックして署名し、特定のフォルダーにコピーするだけです。


署名と対処は適切に行われ、正しく機能します (maven-dependency-plugin と maven-jarsigner-plugin を使用することで期待どおり)。しかし、単一のdllをjarに自動的にパックする方法は見つかりませんでした(maven-assembly-pluginのようなソースはありません)。


その時までに私が見た解決策:「純粋な」dllではなく、すでにjar libにパックされている(自分でパックした)リポジトリに追加します...しかし、それは良い考えではないと思います)

4

2 に答える 2

1

.dll(依存関係プラグインを使用)を正常に取得して署名(jarsignerプラグイン)したようです。${project.build.directory}これは(デフォルトはtarget)のどこかにあります。

それが正しければ、これを試してみてください。

  • packagingプロジェクトのを次のように定義しますjar
  • DLLを取得する
  • jarsigner:sign目標がprepare-packageフェーズにバインドされていることを確認してください。packageデフォルトでにバインドされ、のjarsigner:sign前に実行されることを確認する必要がありますjar: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 に答える
1

maven-assembly-plugin を介して dll を zip アーカイブとしてパックし、そのモジュールが通常の pom に添付されている zip アーカイブをデプロイできるようにすることをお勧めします。そのプロジェクトのパッケージは、デフォルトではなく pom にする必要があります。jar をダウンロードしてその中に dll があると少し混乱しますが、必要に応じて、maven-assembly-plugin を介して jar を作成するか、maven-jar-plugin を使用できます。

于 2012-04-17T12:51:30.693 に答える