我有一个加载applet的html文件。 html需要按名称引用jar,并且由于maven根据artifactid,version等命名它,html需要随着项目的发展而动态更新。似乎资源过滤是可行的方法,但我无法弄清楚要插入的变量应该是什么样子。我想要一些类似于$ {project.dependencies.myartifactid.version}的内容,但这似乎不是一种选择,而且我有可怕的运气谷歌搜索。
答案 0 :(得分:6)
您需要${project.dependencies[0].artifactId}
之类的内容,其中0
是war模块中applet依赖关系的索引(请参阅PLXUTILS-37)。事实上,使用资源过滤应该可行。
更新:Maven资源插件中似乎存在错误,此属性未按照this question中的说明进行过滤。您可能必须使用this answer中建议的变通方法。
答案 1 :(得分:3)
据我所知,你试图让版本保持最新,同时期望其余部分保持不变。有两种选择。
首先是从名称中删除版本,以便不需要更改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插件包含:
<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}
,但仍然只需在一个位置进行更改。
答案 2 :(得分:-1)
来自http://docs.codehaus.org/display/MAVENUSER/MavenPropertiesGuide:
${project.build.finalName}
指的是打包构建项目时创建的文件的最终名称
您拥有的另一个选项是将集合${project.build.finalName}
更改为POM中的静态字符串:
<build>
<finalName>foo</finalName>
</build>