簡體   English   中英

在Maven中自動執行dependency:build-classpath

[英]Automatically executing dependency:build-classpath in maven

我實際上是在嘗試這樣做:

http://maven.apache.org/plugins/maven-dependency-plugin/usage.html#The_dependency:build-classpath_mojo

令人驚訝的是,在找到了我想要Maven確切執行的明確示例之后。我仍然無法使其正常工作。

從命令行,我可以運行... mvn -Dmdep.outputFile = classpath.txt依賴項:build-classpath ...的確會生成一個名為classpath.txt的文件,其中包含我想要的信息。

我希望能夠發出“ mvn compile”之類的命令,並使該classpath.txt文件的產生成為該過程的一部分。 上面鏈接中提供的示例將其與generate-sources關聯,據我所知就足夠了。

當使用下面的pom代碼片段執行類似“ mvn compile”的命令時,似乎沒有執行與build-classpath目標有關的任何事情。

<build>
<pluginManagement>
  <plugins>      

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>

        <configuration>
          <source>1.7</source>
          <target>1.7</target>
        </configuration>

     </plugin>

     <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-dependency-plugin</artifactId>
      <version>2.8</version>
      <executions>
       <execution>
        <id>build-classpath</id>
        <phase>generate-sources</phase>
        <goals>
          <goal>build-classpath</goal>
        </goals>
         <configuration>
            <outputFile>myfile.txt</outputFile>
            <mdep.outputFile>myFile1.txt</mdep.outputFile>
            <ihavenoidea>whatgoeshere</ihavenoidea>
         </configuration>
       </execution>
     </executions>
    </plugin>
  </plugins>
 </pluginManagement>
</build>

這就是我最終得到的結果:

$ mvn compile
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building someproj 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ someproj ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ someproj ---
[INFO] Nothing to compile - all classes are up to date
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.600s
[INFO] Finished at: Fri Jan 31 14:05:29 CST 2014
[INFO] Final Memory: 9M/156M
[INFO] ------------------------------------------------------------------------

$ ls 
bin     html        log     pom.xml     resources   sql     src     target      test-output wwwroot

您的插件定義在<pluginManagement>內部,這意味着當您在以該pom為父級的pom(或該pom本身)中聲明該插件的“真實”執行時,它將使用該配置。

通常,當必須通過同一全局項目中的多個模塊對多個執行應用通用配置時,使用<pluginManagement>是一個好主意。

在這里,我個人將編譯器插件保留在<pluginManagement> ,因為您可能總是希望像這樣配置該插件,但是我將把依賴項插件移到<plugins>部分(在<pluginManagement>部分之外)中。是的,這可能會引起混淆……)

您可能將<pluginManagement>視為一種模板。 它通常在父POM中用於定義通用配置。 <build><plugins>僅包含<build><plugins>中的<build><plugins>

也就是說,Maven確實會根據包裝類型做一些“魔術”。 在這里回答了類似的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM