我有一个加载小程序的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