Share via Share via... Twitter LinkedIn Facebook Pinterest Telegram WhatsApp Yammer Reddit最近の変更印刷パーマリンク × Mavenに対応していないjarファイルをMavenのアーティファクトにする java, maven Mavenに対応していない古いjarファイルをMavenのプロジェクトから参照したい場合、 この方法で古いjarファイルをMavenのアーティファクトにできる。 jarファイル名は、元のファイル名から${artifactId}-${version}.jar、${artifactId}-${version}-sources.jar、${artifactId}-${version}-javadoc.jarに変換される。想定する使い方だと、ファイル名が変わらないようにartifactIdとversionを設定する。 参考のために-sources.jarと-javadoc.jarを含めているが、無ければ省略可。 そもそも-sources.jarがあるのならソースを展開して普通のMavenプロジェクトにした方が良い。 compileフェーズでjarからクラスファイルを取り出しているのは、マルチモジュール・プロジェクトの場合にmvn compileやmvn testでエラーが発生するため。 pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>oldlib</artifactId> <version>1.5.1</version> <packaging>pom</packaging> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <version>1.8</version> <executions> <execution> <id>unpack-artifacts</id> <phase>compile</phase> <goals> <goal>run</goal> </goals> <configuration> <target> <unjar src="src/jar/oldlib-1.5.1.jar" dest="${project.build.directory}/classes" /> </target> </configuration> </execution> <execution> <id>attach-artifacts</id> <phase>package</phase> <goals> <goal>run</goal> </goals> <configuration> <target> <attachartifact file="src/jar/oldlib-1.5.1.jar" type="jar" /> <attachartifact file="src/jar/oldlib-1.5.1-sources.jar" type="java-source" classifier="sources" /> <attachartifact file="src/jar/oldlib-1.5.1-javadoc.jar" type="javadoc" classifier="javadoc" /> </target> </configuration> </execution> </executions> </plugin> </plugins> </build> </project> packagingをpomにしないとビルドに失敗する。 アーティファクトとしてjarファイルをattachするだけなら、org.codehaus.mojo:build-helper-maven-pluginのattach-artifactゴールでも同様のことができる。 最終更新: 2020-03-07 14:30by nabium