Maven は、存在しない/カスタム/サードパーティの jar パッケージを中央ウェアハウスに導入し、それらをパッケージ化して実行可能な jar パッケージを生成します

一部の jar パッケージが Maven リポジトリに存在しない場合、それらを Maven プロジェクトに導入するには 2 つの方法があります。ここでは例として、smarthome-nbcodec-1.1.6-SNAPSHOT.jar パッケージを取り上げます。

最初の方法は比較的単純で、jar パッケージをローカルの mavan 倉庫にインポートするだけです。

mvn install:install-file -Dfile=PATH/smarthome-nbcodec-1.1.6-SNAPSHOT.jar -DgroupId=com.my.smarthome -DartifactId=nbcodec -Dversion=1.1.6-SNAPSHOT -Dpackaging=jar -DgeneratePom=true 

このうち、Dfile は jar パッケージの場所、-DgroupId、-DartifactId、-Dversion は状況に応じてカスタマイズでき、-Dpackaging は jar です。その後、pom を介して通常どおりインポートできます。

	<dependency>
			<groupId>com.my.smarthome</groupId>
			<artifactId>nbcodec</artifactId>
			<version>1.1.6-SNAPSHOT</version>
		</dependency>

2 番目の章では、それをプロジェクトに配置してインポートできます。

まず、サードパーティの JAR パッケージを保存するための libs ディレクトリをプロジェクト内に作成します。

ポンポンインポート

	<dependency>
			<groupId>smarthome</groupId>
			<artifactId>nbcodec</artifactId>
			<version>1.1.6-SNAPSHOT</version>
			<scope>system</scope>
			<systemPath>${pom.basedir}/libs/smarthome-nbcodec-1.1.6-SNAPSHOT.jar</systemPath>
		</dependency>

このうち、groupId、artifactId、version は状況に応じてカスタマイズでき、scope はシステムの範囲のみ、systemPath は jar パッケージの場所、pom.basedir です。

このように、コード内で直接使用できますが、パッケージ化後は実行できないため、パッケージ化に関連する構成を構成する必要があります。

maven-assembly-plugin プラグインのパッケージ化

<build>
		<resources>
			<!-- 复制本地扩展jar包到libs目录 -->
			<resource>
				<directory>./libs</directory> <!-- 当前libs目录下的jar包 -->
				<targetPath>${project.build.directory}/dist/${artifactId}-${version}/lib</targetPath> <!-- 复制到本模块打包目录的lib目录 -->
				<includes>
					<include>**/*.jar</include>
				</includes>
			</resource>
			<!--定义了上面的resource, 要想默认的src/main/resources目录生效, 必须显式额外增加下面的配置-->
			<resource>
				<directory>src/main/resources</directory>
				<!-- 表示是否对配置文件中的${}占位符进行解析替换-->
				<filtering>false</filtering>
			</resource>
		</resources>

		<plugins>
			<!-- maven-assembly-plugin插件配置,配置输出目录为dist -->
			<plugin>
				<artifactId>maven-assembly-plugin</artifactId>
				<configuration>
					<appendAssemblyId>false</appendAssemblyId>
					<descriptors>
						<descriptor>package.xml</descriptor>
					</descriptors>
					<outputDirectory>${project.build.directory}/dist/</outputDirectory>
				</configuration>
				<executions>
					<execution>
						<id>make-assembly</id>
						<phase>package</phase>
						<goals>
							<goal>single</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jar-plugin</artifactId>
				<version>2.4</version>
				<configuration>
					<archive>
						<manifest>
							<mainClass>com.xiangtao.LotApp</mainClass>
							<classpathPrefix>lib/</classpathPrefix>
							<addClasspath>true</addClasspath>
						</manifest>
						<manifestEntries>
							<!-- 在Class-Path下添加配置文件的路径 -->
							<Class-Path>resources/ lib/smarthome-nbcodec-1.1.6-SNAPSHOT.jar</Class-Path>
						</manifestEntries>
					</archive>
				</configuration>
			</plugin>
		</plugins>
	</build>

次の位置に注意して書き間違えないようにしましょう

それでも最終的に失敗する場合は、パッケージ化された jar パッケージを解凍し、生成された MANIFEST.MF ファイルをチェックして、すべてのパッケージが正しいかどうかを確認します。

おすすめ

転載: blog.csdn.net/u012970287/article/details/127613264
おすすめ