[英]Is there an equivalent `mvn dependency:build-classpath` for gradle projects?
[英]Automatically executing dependency:build-classpath in maven
我實際上是在嘗試這樣做:
令人驚訝的是,在找到了我想要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.