Java >> Java opplæring >  >> Tag >> maven

Eksempel på Maven War Plugin

I dette eksemplet skal vi se noen av egenskapene fra maven war plugin.

Maven er et byggeautomatiseringsverktøy som hovedsakelig brukes til java-prosjekter fra Apache.

Du kan få tilgang til maven war plugin her.

Vi kommer til å se noen eksempler på mulighetene til maven war plugin.

For dette eksemplet bruker vi følgende teknologier:

  • MAC OSX
  • Eclipse Mars.1
  • Maven3
  • JDK 1.8.0_65 64-bits
  • Maven war plugin 2.6

1. Introduksjon

Maven war-plugin kalles implisitt av maven-livssyklusen i den aktuelle fasen, så det er en "spesiell" plugin. Vi trenger ikke å definere det i pom.xml det vil bli lastet ned og utført når maven trenger det.

Til tross for det kan vi definere det i pom.xml for å bygge prosjektet vårt som en krigsfil.

Maven war plugin har noen mål definert:

  • war :Standard mål. Påkalt under package fase for prosjekter med packaging av war
  • exploded :Dette målet oppretter en eksplodert nettapp i en spesifisert katalog
  • inplace :Dette målet er en exploded målvariant som genererer en eksplodert nettapp inne i nettapplikasjonsmappen i src/main/webapp
  • manifest :dette målet genererer en manifestfil for denne nettappen

Det er ikke nødvendig å definere det målet i pom.xml , som vi sa før, vil maven påberope seg det målet når mavens livssyklus må bygge krigsfilen.

2. Eksempelprosjekt

For dette eksempelet skal vi bruke et java-prosjekt med maven nature som vil bli pakket som en krigsfil. Eclipse Mars kommer med maven-støtte ut av esken, så du trenger ikke å installere noe. Prosjektet vårt vil se slik ut:

Innledende prosjekt

På dette tidspunktet har vi et tomt maven-prosjekt. Vi skal definere maven war plugin inne i pom.xml for å teste plugin-funksjonene.

pom.xml vil se slik ut:

pom:

<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/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.javacodegeeks.examples</groupId>
	<artifactId>maven-war-plugin-example</artifactId>
	<version>1.0.0-SNAPSHOT</version>
	<name>Maven war ::  example</name>
	<url>http://maven.apache.org</url>
	<packaging>war</packaging>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	</properties>

	<build>
		<plugins>
			<plugin>
				<artifactId>maven-war-plugin</artifactId>
				<version>2.6</version>
			</plugin>
		</plugins>
	</build>
</project>

Prosjektet har en dummy-klasse kalt MyClass , en dummy web.xml fil i src/main/webapp/WEB-INF mappe og en hei verden index.html fil i rotwebapp-mappen (src/main/webapp ). Prosjektet inneholder også en mappe kalt more_resources med en dummy-fil kalt resources.txt .

I de følgende kulene skal vi se noen av maven war plugin-funksjonene brukt på dette prosjektet.

3. Generer en eksplodert krig

Plugin-modulen lar deg generere en eksplodert krig som en mappe, du kan gjøre det med mvn war:exploded kommando. Etter å ha kjørt den, vil du se en ny mappe under target mappen med den genererte krigen eksploderte, dette er som en vanlig katalog med alle filene i den.

4. Filtrering av krigsfilinnholdet

Programtillegget lar deg filtrere krigsinnholdet, du kan inkludere/ekskludere ressurser fra utdatakrigsfilen. Følgende pom.xml viser hvordan du inkluderer noen ting til krigsfilen

pom:

<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/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.javacodegeeks.examples</groupId>
	<artifactId>maven-war-plugin-example</artifactId>
	<version>1.0.0-SNAPSHOT</version>
	<name>Maven war ::  example</name>
	<url>http://maven.apache.org</url>
	<packaging>war</packaging>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	</properties>

	<build>
		<plugins>
			<plugin>
				<artifactId>maven-war-plugin</artifactId>
				<version>2.6</version>
				<configuration>
					<webResources>
						<resource>
							<!-- Relative path to the pom.xml directory -->
							<directory>more_resources</directory>
						</resource>
					</webResources>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

Etter å ha kjørt mvn clean install , inne i den genererte krigsstrukturen finner du resource.txt filen i rotmappen som kommer fra more_resources mappe i eksempelprosjektet. Dette er nyttig når vi har andre ressurser (som rapporter eller hva slags ressurser som trengs) og vi ønsker å inkludere det i krigsfilen.

Du kan finne flere detaljer om hvordan du bruker denne funksjonen her.

5. Tilpasser manifestfil

Programtillegget lar deg kontrollere manifestfilen, du kan for eksempel inkludere klassebanen inne i manifestfilen. Dette er nyttig når krigsfilen er under en mer kompleks struktur som en ørefil og du vil dele avhengighetene langs flere moduler.

Følgende pom.xml viser hvordan du bruker denne funksjonen

pom:

<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/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.javacodegeeks.examples</groupId>
	<artifactId>maven-war-plugin-example</artifactId>
	<version>1.0.0-SNAPSHOT</version>
	<name>Maven war ::  example</name>
	<url>http://maven.apache.org</url>
	<packaging>war</packaging>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-core</artifactId>
			<version>4.2.4.RELEASE</version>
			<optional>true</optional>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<artifactId>maven-war-plugin</artifactId>
				<version>2.6</version>
				<configuration>
					<archive>
						<manifest>
							<addClasspath>true</addClasspath>
						</manifest>
					</archive>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

For å teste klassebane-inkluderingen i manifest.mf filen har vi lagt til spring avhengighet i pom.xml, etter kjøring mvn clean install vi kan se en manifest.mf fil slik:

manifest.mf:

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: fhernandez
Class-Path: spring-core-4.2.4.RELEASE.jar commons-logging-1.2.jar
Created-By: Apache Maven 3.3.3
Build-Jdk: 1.8.0_65

Som du kan se, er manifest filen inkluderer en Class-Path: egenskap med klassebaneoppføringen basert på avhengighetene definert i pom.xml på en transitiv måte.

6. Konklusjoner

Som vi har sett, tilbyr maven war-plugin noen interessante funksjoner som vi kan dra nytte av for å bygge krigsfiler, du kan få flere detaljer i lenken ovenfor ved introduksjonen av dette eksemplet.

7. Last ned Eclipse-prosjektet

plugin-krig
Java Tag