在通过WTP将资源部署到Tomcat之前,如何让Eclipse识别我对maven-dependency-plugin
的使用并执行?
在a previous question我配置Maven将一些工件复制到war
应用程序中,因此我可以将它们提供给Web客户端。通过Maven命令行打包时,将它们复制到target/${project.artifactId}-${project.version}
的方法很有效。遗憾的是,使用Eclipse的Tomcat集成时没有这样的运气。
Maven插件配置:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.8</version>
<executions>
<execution>
<id>copy</id>
<phase>compile</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<type>jar</type>
<overWrite>false</overWrite>
<destFileName>optional-new-name.jar</destFileName>
</artifactItem>
</artifactItems>
<outputDirectory>${project.build.directory}/${project.artifactId}-${project.version}/</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>true</overWriteSnapshots>
</configuration>
</execution>
</executions>
答案 0 :(得分:1)
这个答案假设你使用的是Eclipse Java EE Kepler SR1(或更新版本),它附带了Maven集成插件(m2e和m2e-wtp)。
m2e-wtp,Maven Integration for WTP插件忽略了maven CLI构建并配置WTP以从已知位置发布资源。
所以你需要做两件事:
首先,在属性部分中定义一个新的maven属性:
<jars.directory>${project.build.directory}/${project.artifactId}-${project.version}/</jars.directory>
在maven-dependency-plugin配置中,使用:
<outputDirectory>${jars.directory}</outputDirectory>
现在应该使用Maven CLI为您提供相同的构建结果。然后你需要使用一个特定的m2e配置文件,它将在Eclipse中运行时自动启用,并在所有其他情况下被忽略:
<profiles>
<profile>
<id>m2e</id>
<!-- This profile is only activated when building in Eclipse with m2e -->
<activation>
<property>
<name>m2e.version</name>
</property>
</activation>
<properties>
<jars.directory>${project.build.directory}/m2e-wtp/web-resources/</jars.directory>
</properties>
</profile>
</profiles>
最后,我们需要让m2e知道可以运行maven-dependency-plugin:在项目配置期间复制。将以下代码段添加到pluginManagement部分:
<pluginManagement>
<plugins>
<!--This plugin's configuration is used to store Eclipse m2e settings
only. It has no influence on the Maven build itself. -->
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<versionRange>[2.8,)</versionRange>
<goals>
<goal>copy</goal>
</goals>
</pluginExecutionFilter>
<action>
<execute>
<runOnConfiguration>true</runOnConfiguration>
<runOnIncremental>false</runOnIncremental>
</execute>
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
现在,确保m2e知道所有这些配置更改:按Alt + F5打开Update Maven Configuration对话框,然后单击ok。构建完成后,您应该在Deployed Resources&gt;下看到您的jar。 web资源,在Project Explorer视图中。
从现在开始,Tomcat的部署应该在您的webapp的根目录中包含optional-new-name.jar。