2013-06-04 16 views
14

Ho provato a generare un pomp efficace sull'applicazione di esempio usando mvn help: comando pom-efficace. http://books.sonatype.com/mvnref-book/reference/pom-relationships-sect-pom.html in questo articolo si dice pom efficace è una fusione tra super pom e pom pom.Efficace-pom una fusione tra super pom e applicazione POM

Ma, quando guardo il mio pom, contiene elementi che non sono inclusi nel pom pom o in pom super.

C'è un altro fattore che decide cosa va in pom efficace.

Dato che qui sotto c'è il pom pom e l'applicazione pom, entrambi questi pom non hanno il plugin mavne-jar o il plugin maven-compiler-plug, ma nel mio efficace pom posso vedere quei plugin nella sezione di compilazione. Quindi, come viene aggiunto.

Grazie in anticipo per qualsiasi aiuto su chiarire questo problema

Super POM

<!-- 
Licensed to the Apache Software Foundation (ASF) under one 
or more contributor license agreements. See the NOTICE file 
distributed with this work for additional information 
regarding copyright ownership. The ASF licenses this file 
to you under the Apache License, Version 2.0 (the 
"License"); you may not use this file except in compliance 
with the License. You may obtain a copy of the License at 

    http://www.apache.org/licenses/LICENSE-2.0 

Unless required by applicable law or agreed to in writing, 
software distributed under the License is distributed on an 
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 
KIND, either express or implied. See the License for the 
specific language governing permissions and limitations 
under the License. 
--> 

<!-- START SNIPPET: superpom --> 
<project> 
    <modelVersion>4.0.0</modelVersion> 

    <repositories> 
    <repository> 
     <id>central</id> 
     <name>Central Repository</name> 
     <url>http://repo.maven.apache.org/maven2</url> 
     <layout>default</layout> 
     <snapshots> 
     <enabled>false</enabled> 
     </snapshots> 
    </repository> 
    </repositories> 

    <pluginRepositories> 
    <pluginRepository> 
     <id>central</id> 
     <name>Central Repository</name> 
     <url>http://repo.maven.apache.org/maven2</url> 
     <layout>default</layout> 
     <snapshots> 
     <enabled>false</enabled> 
     </snapshots> 
     <releases> 
     <updatePolicy>never</updatePolicy> 
     </releases> 
    </pluginRepository> 
    </pluginRepositories> 

    <build> 
    <directory>${project.basedir}/target</directory> 
    <outputDirectory>${project.build.directory}/classes</outputDirectory> 
    <finalName>${project.artifactId}-${project.version}</finalName> 
    <testOutputDirectory>${project.build.directory}/test-classes</testOutputDirectory> 
    <sourceDirectory>${project.basedir}/src/main/java</sourceDirectory> 
    <scriptSourceDirectory>src/main/scripts</scriptSourceDirectory> 
    <testSourceDirectory>${project.basedir}/src/test/java</testSourceDirectory> 
    <resources> 
     <resource> 
     <directory>${project.basedir}/src/main/resources</directory> 
     </resource> 
    </resources> 
    <testResources> 
     <testResource> 
     <directory>${project.basedir}/src/test/resources</directory> 
     </testResource> 
    </testResources> 
    <pluginManagement> 
     <!-- NOTE: These plugins will be removed from future versions of the super POM --> 
     <!-- They are kept for the moment as they are very unlikely to conflict with lifecycle mappings (MNG-4453) --> 
     <plugins> 
     <plugin> 
      <artifactId>maven-antrun-plugin</artifactId> 
      <version>1.3</version> 
     </plugin> 
     <plugin> 
      <artifactId>maven-assembly-plugin</artifactId> 
      <version>2.2-beta-5</version> 
     </plugin> 
     <plugin> 
      <artifactId>maven-dependency-plugin</artifactId> 
      <version>2.1</version> 
     </plugin> 
     <plugin> 
      <artifactId>maven-release-plugin</artifactId> 
      <version>2.0</version> 
     </plugin> 
     </plugins> 
    </pluginManagement> 
    </build> 

    <reporting> 
    <outputDirectory>${project.build.directory}/site</outputDirectory> 
    </reporting> 

    <profiles> 
    <!-- NOTE: The release profile will be removed from future versions of the super POM --> 
    <profile> 
     <id>release-profile</id> 

     <activation> 
     <property> 
      <name>performRelease</name> 
      <value>true</value> 
     </property> 
     </activation> 

     <build> 
     <plugins> 
      <plugin> 
      <inherited>true</inherited> 
      <artifactId>maven-source-plugin</artifactId> 
      <executions> 
       <execution> 
       <id>attach-sources</id> 
       <goals> 
        <goal>jar</goal> 
       </goals> 
       </execution> 
      </executions> 
      </plugin> 
      <plugin> 
      <inherited>true</inherited> 
      <artifactId>maven-javadoc-plugin</artifactId> 
      <executions> 
       <execution> 
       <id>attach-javadocs</id> 
       <goals> 
        <goal>jar</goal> 
       </goals> 
       </execution> 
      </executions> 
      </plugin> 
      <plugin> 
      <inherited>true</inherited> 
      <artifactId>maven-deploy-plugin</artifactId> 
      <configuration> 
       <updateReleaseInfo>true</updateReleaseInfo> 
      </configuration> 
      </plugin> 
     </plugins> 
     </build> 
    </profile> 
    </profiles> 

</project> 
<!-- END SNIPPET: superpom --> 

Applicazione POM

<project> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>org.sonatype.mavenbook.ch08</groupId> 
    <artifactId>simplest-project</artifactId> 
    <packaging>jar</packaging> 
    <version>1</version> 
</project> 

efficace pom

+1

Immagino che tu abbia dimenticato di aggiungere il pom efficace. – Utku

risposta

20

Efficace POM è composto da Super POM + POM dell'applicazione + impostazioni settings.xml + plugins legati al ciclo di vita per impostazione predefinita in base al tipo di imballaggio scelto (quindi, in base a un elemento nel POM dell'applicazione).

Hai chiesto informazioni su maven-jar-plugin e maven-compiler-plugin. Questi sono legati al ciclo di vita per impostazione predefinita, poiché l'applicazione POM specifica l'imballaggio jar.

È possibile visualizzare i collegamenti predefiniti in $YOUR_REPO_LOCATION\org\apache\maven\maven-core\3.0.x\maven-core-3.0.x.jar\META-INF\plexus\components.xml o nello documentation.

+1

Grazie per questa risposta, un'altra domanda da chiarire, quindi Maven agirà su pom efficace durante l'esecuzione del ciclo di vita predefinito a destra, ho ragione ? – KItis

+3

Maven costruisce il pom efficace, quindi lo usa durante l'esecuzione di qualsiasi comando dato, sia durante la fase del ciclo di vita (ad es. 'Mvn install') o l'obiettivo specifico (ad esempio' versioni mvn: display-dependency-updates'). – user944849

+0

@ user944849 A proposito, il mio 'maven-core-3.0.3.jar' non era nel mio repository locale, ma a' $ (MAVEN_HOME)/lib/maven-core-3.0.3.jar'. Quale potrebbe essere la ragione di questo? – Utku

3

Se non ricordo male, efficaci mezzi POM il POM effettivo da utilizzare.

L'integrazione delle impostazioni in Super POM ne fa parte. Comprende anche molte altre cose, come l'applicazione di POM padre, l'applicazione di profili, la sostituzione di proprietà e così via.

Penso che sarà meglio se puoi dare qualche frammento delle impostazioni che pensavi provenga da no dove, quindi che possiamo identificare da dove vengono.

+0

Ho aggiornato la domanda con Super POM, application pom e le nuove funzioni in efficace-pom – KItis

Problemi correlati