我有一個加載小程序的html文件。 html需要通過名稱引用jar,並且由於maven根據artifactid,版本等來命名它,所以隨着項目的發展,html需要動態更新。似乎資源過濾是要走的路,但我無法弄清楚要插入的變量應該是什麼樣子。我想要一些類似於$ {project.dependencies.myartifactid.version}的東西,但這似乎並不是一種選擇,而且我的搜索引擎運行起來非常糟糕。Maven項目變量的依賴關係
回答
您需要類似${project.dependencies[0].artifactId}
其中0
是戰爭模塊中applet依賴關係的索引(請參閱PLXUTILS-37)。實際上,使用資源過濾應該起作用。
更新:看來,在Maven資源插件中存在一個錯誤,該屬性不會像this question中提到的那樣被過濾。您可能必須使用this answer中建議的解決方法。
從http://docs.codehaus.org/display/MAVENUSER/MavenPropertiesGuide:
創建該文件的最終名稱
${project.build.finalName}
是指當建項目將打包
你有另一種選擇是要更改設置${project.build.finalName}
在一個靜態的字符串你POM:
<build>
<finalName>foo</finalName>
</build>
是的,但小程序很可能在戰爭所依賴的jar中,這不會給你applet的jar名稱。 – 2010-02-10 03:28:57
沒有意識到JAR是一個依賴項。那麼是的,這不會有幫助。 – 2010-02-10 03:54:39
據我瞭解,您正試圖保持版本是最新的,而期待其餘的保持不變。有兩種選擇。
第一種是從名稱中刪除版本,以便HTML不需要更改。您可以通過搜索archiva-applet
在這裏看到一個實際的例子:http://svn.apache.org/repos/asf/archiva/tags/archiva-1.3/archiva-modules/archiva-web/archiva-webapp/pom.xml
在這個例子中,因爲你不希望在WEB-INF/classes
反正小程序,它是從webapp的省略,然後包括通過Dependency插件:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.0</version>
<executions>
<execution>
<id>copy</id>
<phase>process-resources</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>${project.groupId}</groupId>
<artifactId>archiva-applet</artifactId>
<version>${project.version}</version>
<outputDirectory>src/main/webapp</outputDirectory>
<destFileName>archiva-applet.jar</destFileName>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
如果您使用的是Maven 2.1.0+,則可以使用prepare-package
階段,並將其直接複製到輸出而不修改源目錄。
然後,您使用單個名稱引用HTML中的小程序。
另一種解決方案,如果你想繼續篩選和保留的版本,是使用共享屬性:
<properties>
<applet.version>1.2.3</applet.version>
</properties>
...
<dependency>
<groupId>my.group</groupId>
<artifactId>my.applet</artifactId>
<version>${applet.version}</version>
</dependency>
...
你然後可以在HTML中使用${applet.version}
,並且仍然只需要在一個地方更改它。
- 1. Maven項目之間的依賴關係
- 2. Maven,項目之間的依賴關係
- 3. Gradle項目中的Maven依賴關係
- 4. 從Maven項目構建依賴關係?
- 5. Maven運行項目與依賴關係
- 6. 獲取缺少依賴關係的Maven項目的依賴關係
- 7. maven force重建依賴項目(首先構建依賴關係)
- 8. Maven依賴關係與多個項目的依賴關係管理
- 9. NetBeans中的Maven項目:如何向「依賴關係」和「測試依賴關係」添加依賴關係?
- 10. Maven依賴關係
- 11. Maven依賴關係
- 12. 依賴的Maven副本依賴關係
- 13. Maven項目中的非Maven依賴關係
- 14. VS2010項目依賴關係
- 15. Eclipse項目依賴關係
- 16. Sbt項目依賴關係
- 17. Java項目依賴關係
- 18. CMAKE項目依賴關係
- 19. 指定項目的依賴關係:複製依賴關係?
- 20. 如何在Maven項目中公開依賴項的依賴關係
- 21. AbstractHandler的Maven依賴關係
- 22. sqlserver2010的maven依賴關係?
- 23. LibreOffice Maven的依賴關係?
- 24. maven依賴關係的API
- 25. com.day.util的Maven依賴關係
- 26. 如何關閉maven項目的傳遞依賴關係?
- 27. 在關閉項目時破壞了maven的依賴關係
- 28. 查找Maven依賴項對象的依賴關係
- 29. 在Maven中自動下載依賴項的依賴關係
- 30. 從項目依賴中排除項目依賴關係
賓果!沒有發現任何跡象表明您可以通過這種方式對變量進行索引。謝謝你,先生。(現在,如果我只能通過名稱而不是索引來識別它,噢,嗯,這肯定會起作用)。 – 2010-02-11 18:20:53
@Erik是的,它會很脆弱(例如,添加依賴項可能會破壞所有需要記錄的事情),但是很遺憾,我認爲沒有更好的。 – 2010-02-11 18:24:45
實際上這隻能工作,直到maven antrun插件版本1.3。從1.4開始,$ {project.dependencies [0] .artifactId}不再被內插。 – JayZee 2014-09-22 13:23:47