LoginSignup
0
0

【maven】jar とライブラリをまとめて展開用 zip 作成

Posted at

概要

  • バッチ用の jar を作成
  • ライブラリの jar も lib ディレクトリにまとめて展開用 zip を作る
  • 実行可能 jar ではない (Fat.jar, Uber.jar とは厳密には異なる)
  • 実行する際は zip を unzip して展開後、java コマンドで
  • java -cp "batch.jar;lib/*" <実行クラス> <パラメータ> として起動を想定

環境

  • jdk 1.8
  • maven 3
  • maven-assembly-plugin 2.2

ローカルリポジトリがある場合

  • 下記構成にしてプロジェクト内のローカル jar を取得可能
    • ${project.basedir}/lib/[localGroupId]/[localArtifactId]/[version]/[localArtifactId]-[version].jar
pom.xml
	<repositories>
		<repository>
			<id>localRepositoryId</id>
			<name>localRepositoryName</name>
			<url>file://${project.basedir}/lib</url>
		</repository>
	</repositories>

    <dependencies>
		<dependency>
			<groupId>localGroupId</groupId>
			<artifactId>localArtifactId</artifactId>
			<version>1.0</version>
		</dependency>
    </dependencies>

maven-jar-plugin

  • pom.xml
pom.xml
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jar-plugin</artifactId>
				<configuration>
					<archive>
						<index>false</index>
						<manifest>
							<mainClass>[main.class.name]</mainClass>
							<addClasspath>true</addClasspath>
							<classpathPrefix>lib/</classpathPrefix>
						</manifest>
					</archive>
				</configuration>
			</plugin>

maven-assembly-plugin

  • pom.xml
pom.xml
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-assembly-plugin</artifactId>
						<configuration>
                            <!-- ファイル名に余計な文字列を付加しない -->
							<appendAssemblyId>false</appendAssemblyId>
							<descriptors>
								<descriptor>assembly/assembly.xml</descriptor>
							</descriptors>
							<finalName>${project.artifactId}</finalName>
						</configuration>
						<executions>
							<execution>
								<phase>package</phase>
								<goals>
									<goal>single</goal>
								</goals>
							</execution>
						</executions>
					</plugin>
  • assemby/assembly.xml
assembly.xml
<?xml version="1.0" encoding="UTF-8"?>
<assembly>
	<id>assembly</id>
	<formats>
		<format>zip</format>
	</formats>
	<includeBaseDirectory>false</includeBaseDirectory>
	<fileSets>
		<fileSet>
			<directory>target</directory>
			<outputDirectory></outputDirectory>
			<includes>
				<include>*.jar</include>
			</includes>
		</fileSet>
	</fileSets>
	<dependencySets>
		<dependencySet>
			<unpack>false</unpack>
			<scope>runtime</scope>
            <!-- 自身の jar は lib に入れない -->
			<useProjectArtifact>false</useProjectArtifact>
			<outputDirectory>lib</outputDirectory>
		</dependencySet>
	</dependencySets>
</assembly>

実行

mvn clean package -P [profile]

以上、お疲れ様でした!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0