Este artículo presenta el método de usar Maven para generar paquetes JAR ejecutables. Se comparte contigo. Los detalles son los siguientes:
Desde el XSI de POM, puede abrir el esquema que describe POM:
Puedes ver la estructura del proyecto en el POM:
El JAR generado por la instalación MVN predeterminada no tiene la entrada de clase principal, y la clase principal debe establecerse en Maven-Comil-Plugin.
<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.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0. http://maven.apache.org/xsd/maven-4.0.0.xsd "> <modelVersion> 4.0.0 </modelversion> <MoupRid> com.cetc.di </proupid> <artifactid> hellocetc </artifactid> <verserse.0.1-snapshot </sions> </paquete </paquete </paquete </artifactid> <PROPESSONSE. <name>hellocetc</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <Persion> 3.8.1 </versión> <cope> test </cope> </pendency> </pendencs> <eded> <gluginmanagement> <glugins> <glugin> <proupid> org.apache.maven.plugins </groupid> <artifactid> maven-jar-plugin </artifactid> <ponture> <togurture> <foured> 1.8 <coured <urariGiA <TourTour> 1.88 <Achive> <Smanifest> <Mainclass> com.cetc.di.hellocetc.app </ mainclass> <addclasspath> true </dclasspath> <classpathprefix> lib/</classpathprefix> </manifest> </archive> <classesDirectory> </classesDirectory> </figuration> </pleminginy> </gluginmanagement> </struct> </proyecto>
Ejecutar la instalación de MVN:
En el directorio de destino, se encuentra que se ha generado el paquete JAR:
Usando el descompilador Java, puede ver que MainClass se ha agregado al manifiesto:
Use la ayuda de MVN: POM efectiva para ver la estructura completa de POM.xml (incluidas las propiedades heredadas):
[Info] escaneo para proyectos ... [info] [info] ------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------- aplicado: <!- ================================================================== ================================================================== ================================================================== ================================================================== ================================================================== ================================================================== ================================================================== ====================================================================== ================================================================== ====================================================================== ====================================================================== ====================================================================== ====================================================================== ====================================================================== ====================================================================== ====================================================================== ============================================================================= -> <Proyecto xmlns = "http://maven.apache.org/pom/ 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.0.xsd" <modelVersion> 4.0.0 </modelversion> <MoupRid> com.cetc.di </groupid> <artifactid> hellocetc </artifactid> <versión> 0.0.1-snapshot </versions> <name> hellocetc </name> <url> http://maven.apache.org </url> <procesas> <Project.Build.SourceEncoding> UTF-8 </project.build.sourceEncoding> </propiESS> <Spendencies> <Spendency> <MoupRupid> Junit </GroupId> <AtifactId> Junit </ArtifactId> <PROPONSION> 3.8.1 </COPE> <COPE> TEST </cope> </pope> </sperserderies <pepositories <repositories <repositorios <repositorios <repositorios <repositorios <repositorios <repositorios <repositorios <repositories <Snstapshots> <Dabled> False </Enabled> </snstapshots> <id> Central </id> <name> Repository Central </name> <url> https://repo.maven.apache.org/maven2 </url> </repositorio> <SpolyPolicy> nunca </updatePolicy> </arlotes> <Snstapshots> <Enedably> false </habilitado> </snapshots> <id> Central </id> <name> Repository Central </name> <url> https://repo.maven.apache.org/maven2 </ url> </gluginrepository> </pluginephugeRory> <ourCedirectory> d:/users/a/workpaces/myeclipse 2015/hellocetc/src/main/java </fourcedirectory> <scriptSourCedirectory> d:/users/a/workspaces/myEClipse 2015/helloCetc/src/main/scripts </scriptsouredirectory> <TestSourCedIrectory> D:/Users/a/Workspaces/MyEClipse 2015/hellocetc/src/test/java </testsourcedirectory> <OutputDirectory> d:/users/a/workpaces/myeclipse 2015/hellocetc/target/classes </outputdirectory> <PosteOutputDirectory> d:/users/a/workspaces/myeclipse 2015/hellocetc/target/test-classes </testOutputDirectory> <contriss> <Resource> <Directory> d:/users/a/workspaces/myEclipse 2015/hellocetc/src/main/recursos </sirectory> </recursos> </testraureseures <Directory> D:/Users/A/Workspaces/MyEClipse 2015/HELLOCETC/SRC/Test/Resources </Directory> </TestResources> </testResources> <Directory> d:/users/a/workspaces/myEClipse 2015/hellocetC/target </directory> <finalName> hellocetc-0.0.0.1 ssnaps. <gluginmanagement> <glugins> <artifactid> maven-antrun-plugin </artifactid> <versión> 1.3 </verversion> </tugin> <glugin> <artifactid> maven-assembly-plugin </artifactid> <versión> 2.2-beta-5 </lipsion> </tugin> <glugin> <artifactId>maven-dependency-plugin</artifactId> <version>2.8</version> </plugin> <plugin> <artifactId>maven-release-plugin</artifactId> <version>2.3.2</version> </plugin> <plugin> <artifactId>maven-jar-plugin</artifactId> <version>2.4</version> <Configuration> <Overned> 1.8 </over> <Atgast> 1.8 </gast> <change> <Smanifest> <RainClass> com.cetc.di.hellocetc.app </ mainclass> <addClassPath> true </shclasspath> <classpathprefix> lib/lib/</classpathprefix> </manifest> </changeSdirector </figuration> </tugin> </glugins> </glugins> </gluginmanagement> <glugins> <artifactid> maven-clip-plugin </artifactid> <versión> 2.5 </versión> <secucesions> <decution> <id> default-limpiando </id> <fase> limpia </fase> <Souts> </meta> </multa> </ejecutivo> </ejecutor <glugin> <artifactid> maven-resurces-plugin </artifactid> <ververy> 2.6 </ververy> <secursions> <secution> <di> testroSources predeterminado </id> <sase> process-test-recesces </fase> <setals> <set> testresources </ports> </metas> </secution> <secution> <d> Raoursures> </objetivos> </metas> </metas> </metas> </objetivo> </objetivo> </objetivo <///objetivo <//objetivo> </objetivo> </objetivo> </objetivo> </objetivo> </objetivo> </objetivo> </objetivo> </cutal> </sutal> </objetivo> </cutal </objetivo> </cutal </sutal> </objetivo> </cutal </objetivo> </objetivo> </objetivo> </objetivo> </objetivo> </objetivo> </objetivo> </objetivo> </objetivo </// </secution> <secution> <id>-recursos predeterminados </id> <fase> recesores de procesos </fase> <estions> <putal> recursos </pero> </cacution> </tugin> <glugin> <artifactid> maven-jar-jar-plugin </artifactid> <version> 2.4 </versión> <cureations> <secution> <d> Jitar </Id Idusil> Iduspator> <SoTe> <SoT> jar </meta> </metas> <figuration> <ureur> 1.8 </over> <gast Target> 1.8 </target> <change> <manifest> <mainclass> com.cetc.di.hellocetc.app </mainclass> <addclasspath> true </adddclasspath> <classpathprefix> </schive> <ClassesDirectory/> </figuration> </cacution> </ecucesions> <figuration> <overned> 1.8 </overgore> <arget> 1.8 </target> <change> <manifest> <mainclass> com.cetc.di.hellocetc.app </ mainclass> <addclasspath> true </dclasspath> <ClassPathPrefix> lib/</classpathprefix> </shangest> </change> <classesDirectory/> </figuration> </plugin> <glugin> <tifactid> maven-compiler-plugin </artifactid> <versions versión> 3.1 </versión> <cacexions> <secution> <d> compile </id) <SOTS> <SOT-COMPILE </SOTH> </SOTS> </ESCURICIÓN> <ECTUVION> <DI> TEUNTUAL-TESTCOMPILE </id> <Shase> Test-Compile </fase> <SOTS> <SOTMO> TESTCOMPILE </sput> </spets> </secution> </tugin> </tugin> <gligin> <artifactid> mavenfire-plugin </artiCtactid> <versión> 2.12.4 </versión> <ecursions> <secution> <secution> <d>-test predeterminada </id> <fase> test </fase> <estions> <set> test </metal> </metas> </ejecution> </ecucesions> </glugin> <glugin> <artifactid> maven-install-plugin </artifactid> <verserse> </tugin> </votremin> <artifactid> Maven-Install -plugin </artifactid> <verserse> </tugin> </vothereS> <Atifactid> MavenS-Install -plugin </artifactid> <verserse> <Di> Instalación predeterminada </id> <fase> Instalar </fase> <estemates> <SOTH> install </SOTH> </SOTS> </ECTUVION> </ejecutiones> </tugin> <glugin> <arifactid> maven-deploy-plugin </artifactid> <versión> 2.7 </sions> <ecutesions> <Ecturution> <d> predeterminado </id> </id> </id> <SOT> Deploy </SOTH> </SOTS> </secution> </ejecutions> </tugin> <glugin> <artifactID> maven-site-plugin </artifactid> <versers> 3.3 </versión> <ecucesions> <secution> <id> site predeterminado </id> <seSe> sitio </fase> <Soution> <putal> sitio </meta> </secution> <secution> <PoutedDirectory> D:/Users/a/Workspaces/MyEClipse 2015/HELLOCETC/Target/Site </OutputDirectory> <Reportplugins> <ReportPlugin> <MoupRupid> org.apache.maven.plugins </groupId> <AtifactId> maven-project-Info-Reports-Plugin </artifactid </artifactid </artifiN> </artifactin> </reportplugins> </sneportplugins> </figuration> </cacution> <secution> <id> predeterminado-DEPLOY </id> <fase> sitio-deploy </fase> <potes> <pots> implement </poal> </puns> <figuration> <utedDirectory> d:/users/a/workpaces/myEclipse 2015/hellocetc/toat/site <siting <outeding <outeding <outeding <outeding </outbastyry <Nortplugins> <Sformplugin> <MoupRoid> org.apache.maven.plugins </proupid> <artifactid> maven-project-Info-Reports-plugin </artifactid> </reportplugin> </reportplugins> </reportplugins> </figuration> </cacution> </secutions> <figuration> <PoutedDirectory> D:/Users/a/Workspaces/MyEClipse 2015/HELLOCETC/Target/Site </OutputDirectory> <Reportplugins> <ReportPlugin> <MoupRupid> org.apache.maven.plugins </groupId> <AtifactId> maven-project-Info-Reports-Plugin </artifactid </artifactid </artifiN> </artifactin> </reportplugins> </figuration> </glugin> </glugins> </stract> <neporting> <OutputDirectory> d:/users/a/workpaces/myeclipse 2015/hellocetc/target/site </outputdirectory> </reporting> </proyecto> [info] ----------------------------------------------------------------------------------------------------------------------- 2015-11-18T20: 05: 12+08: 00 [Información] Memoria final: 10m/245m [Info] -------------------------------------------------------------------------------------------------------------------------------------------------------
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.