依赖项的Maven项目变量

我有一个加载applet的html文件。 html需要按名称引用jar,并且由于maven根据artifactid,version等命名它,因此html需要随着项目的发展而动态更新。 似乎资源过滤是可行的方法,但我无法弄清楚要插入的变量应该是什么样子。 我想要一些类似于$ {project.dependencies.myartifactid.version}的内容,但这似乎不是一个选项,而且我有一个糟糕的运气谷歌搜索。

你需要像${project.dependencies[0].artifactId} ,其中0是war模块中applet依赖关系的索引(参见PLXUTILS-37 )。 事实上,使用资源过滤应该有效。

更新: Maven Resources Plugin中似乎存在错误,此属性不会按照此问题中的提及进行过滤。 您可能必须使用此答案中建议的解决方法。

据我所知,你试图让版本保持最新,同时期望其余版本保持不变。 有两种选择。

第一种是从名称中删除版本,以便不需要更改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使用applet,它会从webapp中省略,然后通过Dependency插件包含:

  org.apache.maven.plugins maven-dependency-plugin 2.0   copy process-resources  copy     ${project.groupId} archiva-applet ${project.version} src/main/webapp archiva-applet.jar       

如果您使用的是Maven 2.1.0+,则可以使用prepare-package阶段并将其直接复制到输出而无需修改源目录。

然后,使用单个名称引用HTML中的applet。

如果要继续过滤并保留版本,另一种解决方案是使用共享属性:

  1.2.3  

  my.group my.applet ${applet.version}  

然后,您可以在HTML中使用${applet.version} ,但仍然只需在一个位置更改它。

来自http://docs.codehaus.org/display/MAVENUSER/MavenPropertiesGuide :

${project.build.finalName}指的是打包构建项目时创建的文件的最终名称

另一个选择是将set ${project.build.finalName}更改${project.build.finalName} POM中的静态字符串:

  foo