插件标签中的依赖项和依赖项之间有区别吗?

时间:2013-04-10 05:04:57

标签: maven maven-plugin

我有一个问题。

在pom.xml中,依赖包含在两个地方。 一个地方可以在<project>代码中,另一个地方可以在<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 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <artifactId>clustered-queue</artifactId>
   <packaging>jar</packaging>
   <name>HornetQ JMS Clustered Queue Example</name>

   <dependencies>

      <dependency>
         <groupId>org.hornetq.examples.jms</groupId>
         <artifactId>hornetq-jms-examples-common</artifactId>
         <version>${project.version}</version>
      </dependency>
      <dependency>
         <groupId>org.jboss.spec.javax.jms</groupId>
         <artifactId>jboss-jms-api_1.1_spec</artifactId>
      </dependency>

   </dependencies>

   <build>
      <plugins>
         <plugin>
            <groupId>org.hornetq</groupId>
            <artifactId>hornetq-maven-plugin</artifactId>
            <executions>
               <execution>
                  <id>start1</id>
                  <goals>
                     <goal>start</goal>
                  </goals>
                  <configuration>
                     <jndiPort>1199</jndiPort>
                     <jndiRmiPort>1198</jndiRmiPort>
                     <hornetqConfigurationDir>${basedir}/target/classes/hornetq/server1</hornetqConfigurationDir>
                     <fork>true</fork>
                     <systemProperties>
                        <property>
                           <name>udp-address</name>
                           <value>${udp-address}</value>
                        </property>
                     </systemProperties>
                  </configuration>
               </execution>
            </executions>
            <dependencies>

               <dependency>
                  <groupId>org.hornetq</groupId>
                  <artifactId>hornetq-core-client</artifactId>
                  <version>${project.version}</version>
               </dependency>
               <dependency>
                  <groupId>org.hornetq</groupId>
                  <artifactId>hornetq-server</artifactId>
                  <version>${project.version}</version>
               </dependency>

            </dependencies>
            <configuration>
               <waitOnStart>false</waitOnStart>
            </configuration>
         </plugin>
      </plugins>
   </build>

</project>

1 个答案:

答案 0 :(得分:7)

<dependencies>下的<project>是我们工件的依赖列表,Maven将在编译时下载并链接依赖项。有关详细信息,请参阅POM Reference: DependenciesIntroduction to the Dependency Mechanism

<dependencies>下的<plugin>将作为其所属插件的依赖项应用。 这样做的好处是可以通过exclusions 删除未使用的运行时依赖项来更改插件 的依赖关系列表,或者通过更改所需依赖项的版本。有关详细信息,请参阅POM Reference: PluginsGuide to Configuring Plug-ins

我希望这可能有所帮助。