Maven 그 유용 한 Plugin 들.
maven 은 자바 개발 자 에 게 필수 적 인 프로젝트 관리 와 구축 도구 로 서 세대 자바 에 깊 은 영향 을 주 었 습 니까?본 고 는 주로 당신 이 사용 한 적 이 있 지만 그다지 자주 사용 하지 않 는 것 을 기록 합 니 다.그러나 중요 한 순간 에 매우 유용 할 수 있 습 니 다
plugin
.필요 할 때 볼 수 있 습 니 다.플러그 인의 자주 사용 되 는 설정 만 열거 합 니 다.컴 파일
maven-compiler-plugin
자바 프로젝트
mvn compile
를 편리 하 게 사용 하 는 것 은 바로 그것 을 사용 하 는 것 이다.더 말 하지 않 아 도 된다.<plugin>
<artifactId>maven-compiler-pluginartifactId>
<version>3.8.0version>
<configuration>
<source>${java.version}source>
<target>${java.version}target>
<encoding>UTF-8encoding>
configuration>
plugin>
maven-source-plugin
<plugin>
<groupId>org.apache.maven.pluginsgroupId>
<artifactId>maven-source-pluginartifactId>
<version>3.0.1version>
<executions>
<execution>
<id>attach-sourcesid>
<phase>nonephase>
<goals>
<goal>jargoal>
goals>
execution>
executions>
plugin>
Jar 패키지 와 이름 바 꾸 기 Package 실행 가능
maven-shade-plugin
maven-shade-plugin
주로 rename 가방 이름 을 제공 합 니 다.가방 에 의존 하 는 것 을 jar 에 넣 습 니 다.그야말로 만능 플러그 인 입 니 다.사용 합 니 다.실제 경험 에 따 르 면 이 플러그 인 은 다른 가방 과 충돌 하 는 sdk 를 제공 할 때 특히 유용 합 니 다.<plugin>
<groupId>org.apache.maven.pluginsgroupId>
<artifactId>maven-shade-pluginartifactId>
<version>3.0.0version>
<executions>
<execution>
<phase>packagephase>
<goals>
<goal>shadegoal>
goals>
<configuration>
<shadedArtifactAttached>falseshadedArtifactAttached> <createDependencyReducedPom>truecreateDependencyReducedPom>
<createSourcesJar>truecreateSourcesJar>
<shadeSourcesContent>trueshadeSourcesContent>
<filters>
<filter>
<artifact>io.jaegertracing:jaeger-thriftartifact>
<includes>
<include>jaeger/org/apache/**include>
<include>io/jaegertracing/**include>
includes>
filter>
<filter>
<artifact>ch.qos.logback:logback-classicartifact>
<excludes>
<exclude>META-INF/services/**exclude>
excludes>
filter>
filters>
<artifactSet>
<excludes>
<exclude>net.bytebuddy:byte-buddy:jar:exclude>
excludes>
artifactSet>
<relocations>
<relocation>
<pattern>com.squareuppattern>
<shadedPattern>${shade.package}.com.squareupshadedPattern>
relocation>
relocations>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<manifestEntries>
<Premain-Class>${premain.class}Premain-Class>
manifestEntries>
transformer>
transformers>
configuration>
execution>
executions>
plugin>
maven-jar-plugin
<plugin>
<groupId>org.apache.maven.pluginsgroupId>
<artifactId>maven-jar-pluginartifactId>
<version>3.1.0version>
<configuration>
<archive>
<manifest>
<addClasspath>trueaddClasspath>
<mainClass>com.test.fastjar.fatjartest.FatJarTestApplicationmainClass>
manifest>
archive>
configuration>
plugin>
maven-assembly-plugin
이 플러그 인 은 주로 온라인 포장 과정 에서 사용 되 지만 실행 가능 한 jar 패 키 지 를 구축 하 는 데 도 사용 할 수 있 습 니 다.
<plugin>
<groupId>org.apache.maven.pluginsgroupId>
<artifactId>maven-assembly-pluginartifactId>
<version>3.1.0version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependenciesdescriptorRef>
descriptorRefs>
<archive>
<manifest>
<mainClass>com.test.fastjar.fatjartest.FatJarTestApplicationmainClass>
manifest>
archive>
configuration>
<executions>
<execution>
<id>assemble-allid>
<phase>packagephase>
<goals>
<goal>singlegoal>
goals>
execution>
executions>
plugin>
발표 하 다.
maven-release-plugin
규범화 프로젝트 의 구축 발표,POM 버 전 을 자동 으로 수정 하고 자동 으로 tag 를 치 는 것 이 특히 유용 합 니 다.
상용 명령:
mvn release:prepare
mvn release:perform -Darguments="-Dmaven.deploy.skip=true"
(jar 가방 을 창고 에 푸 시 하지 않 으 려 면)<plugin>
<groupId>org.apache.maven.pluginsgroupId>
<artifactId>maven-release-pluginartifactId>
<version>2.5.3version>
<configuration>
<tagNameFormat>@{project.version}tagNameFormat>
<autoVersionSubmodules>trueautoVersionSubmodules>
configuration>
plugin>
포장 하 다.
주요 목적 은 필요 한 자원 을 모두 하나의
tar
또는zip
가방 으로 압축 하여 온라인 발표 에 편리 하도록 하 는 것 이다.<plugin>
<groupId>org.apache.maven.pluginsgroupId>
<artifactId>maven-assembly-pluginartifactId>
<version>3.0.0version>
<configuration>
<appendAssemblyId>falseappendAssemblyId>
<filters>
<filter>src/assembly/filter.propertiesfilter>
filters>
<descriptors>
<descriptor>src/assembly/assembly.xmldescriptor>
descriptors>
configuration>
<executions>
<execution>
<id>make-assemblyid>
<phase>packagephase>
<goals>
<goal>singlegoal>
goals>
execution>
executions>
plugin>
중요 한 것 은
src/assembly/assembly.xml
어떻게 설정 하 느 냐 에 있 습 니 다.다음 과 같은 단독 jar 가방 을 온라인 으로 포장 하 는 것 입 니 다.<assembly
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
<id>binid>
<formats>
<format>tar.gzformat>
formats>
<includeBaseDirectory>falseincludeBaseDirectory>
<fileSets>
<fileSet>
<directory>src/bin/${profileActive}directory>
<outputDirectory>${project.artifactId}/binoutputDirectory>
<fileMode>0755fileMode>
fileSet>
fileSets>
<files>
<file>
<source>target/${project.artifactId}-${project.version}.jarsource>
<outputDirectory>${project.artifactId}/outputDirectory>
file>
files>
assembly>
명령 실행
maven-antrun-plugin
ant 명령 실행
<plugin>
<groupId>org.apache.maven.pluginsgroupId>
<artifactId>maven-antrun-pluginartifactId>
<version>1.8version>
<executions>
<execution>
<id>unpackid>
<phase>packagephase>
<configuration>
<target>
<echo message="unjar" />
<unzip src="${project.build.directory}/${artifactId}-${version}.jar" dest="${project.build.directory}/unpacked/" />
target>
configuration>
<goals>
<goal>rungoal>
goals>
execution>
<execution>
<id>copyid>
<phase>packagephase>
<goals>
<goal>rungoal>
goals>
<configuration>
<target>
<copy file="${project.build.directory}/${project.artifactId}-${project.version}.jar" tofile="../agent.jar" overwrite="true" />
<copy file="${project.build.directory}/classes/version" tofile="../version" overwrite="true" />
target>
configuration>
execution>
executions>
plugin>
코드 생 성
mybatis-generator-plugin
<plugin>
<groupId>org.mybatis.generatorgroupId>
<artifactId>mybatis-generator-maven-pluginartifactId>
<version>1.3.7version>
<dependencies>
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
<version>5.1.41version>
dependency>
<dependency>
<groupId>com.itfswgroupId>
<artifactId>mybatis-generator-pluginartifactId>
<version>1.2.15version>
dependency>
dependencies>
<configuration>
<configurationFile>generatorConfig.xmlconfigurationFile>
<overwrite>trueoverwrite>
<verbose>trueverbose>
configuration>
plugin>
generatorConfig.xml
xml version="1.0" encoding="UTF-8" ?>
<generatorConfiguration>
<context id="symphony">
<property name="autoDelimitKeywords" value="true"/>
<property name="beginningDelimiter" value="`"/>
<property name="endingDelimiter" value="`"/>
<plugin type="com.itfsw.mybatis.generator.plugins.SelectOneByExamplePlugin"/>
<plugin type="com.itfsw.mybatis.generator.plugins.LimitPlugin"/>
<plugin type="com.itfsw.mybatis.generator.plugins.ModelBuilderPlugin"/>
<plugin type="com.itfsw.mybatis.generator.plugins.ExampleEnhancedPlugin"/>
<plugin type="com.itfsw.mybatis.generator.plugins.BatchInsertPlugin"/>
<plugin type="com.itfsw.mybatis.generator.plugins.ModelColumnPlugin"/>
<plugin type="com.itfsw.mybatis.generator.plugins.SelectSelectivePlugin"/>
<commentGenerator>
<property name="suppressAllComments" value="false"/>
<property name="suppressDate" value="true"/>
commentGenerator>
<jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://192.168.8.1:5711/xxx?useSSL=false"
userId="xxx" password="xxx"/>
<javaModelGenerator targetPackage="com.xxx.model"
targetProject="src/main/java"/>
<sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources" />
<javaClientGenerator targetPackage="com.xxx.dao"
targetProject="src/main/java" type="XMLMAPPER"/>
<table tableName="app_deploy">
<generatedKey column="id" sqlStatement="JDBC" identity="true"/>
table>
context>
generatorConfiguration>
protobuf-maven-plugin
.proto 파일 에 따라 protobuf 파일 을 만 드 는 데 사용 합 니 다.
<extensions>
<extension>
<groupId>kr.motd.mavengroupId>
<artifactId>os-maven-pluginartifactId>
<version>1.5.0.Finalversion>
extension>
extensions>
<plugin>
<groupId>org.xolstice.maven.pluginsgroupId>
<artifactId>protobuf-maven-pluginartifactId>
<executions>
<execution>
<id>Generate Java from protocol buffersid>
<phase>generate-sourcesphase>
<goals>
<goal>compilegoal>
<goal>compile-customgoal>
goals>
<configuration>
<checkStaleness>truecheckStaleness>
<pluginArtifact>io.grpc:protoc-gen-grpc-java:1.18.0:exe:${os.detected.classifier}pluginArtifact>
<pluginId>grpc-javapluginId>
<protoSourceRoot>${project.build.directory}/generated-sources/_protoprotoSourceRoot>
<protocArtifact>com.google.protobuf:protoc:3.6.1:exe:${os.detected.classifier}protocArtifact>
configuration>
execution>
executions>
plugin>
SCM
maven-scm-plugin
원 격 창고 에서 원본 코드 를 가 져 와 프로젝트 에 사용 합 니 다.
<plugin>
<artifactId>maven-scm-pluginartifactId>
<executions>
<execution>
<id>Checkout Helm Protocol Buffers source codeid>
<phase>generate-sourcesphase>
<goals>
<goal>checkoutgoal>
goals>
<configuration>
<checkoutDirectory>${project.build.directory}/generated-sources/helmcheckoutDirectory>
<connectionUrl>scm:git:https://github.com/kubernetes/helm.gitconnectionUrl>
<includes>_proto/hapi/**includes>
<scmVersion>v2.12.3scmVersion>
<scmVersionType>tagscmVersionType>
configuration>
execution>
executions>
plugin>
총결산
위 와 같이 본인 이 정리 한 유용 한 플러그 인 일 뿐 이 니 참고 하 시기 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.