注:我没有在这个问题上的第一个版本的任何回应,所以我修改它是更通用...如何在Maven和Eclipse中管理多个Web应用程序的共享资源?
语境
我的项目分为几个行家模块和几个网络应用程序。这里是结构:
my-project
+ pom.xml
+-- commons
+-- persistence
+-- ...
+-- web-app-1
+-- web-app-2
+-- ...
所有的web应用程序共享公共资源,如JS,CSS和图像文件。
我决定创建另一个名为web-resources
的WAR项目,而不是在每个web-app-X
中重复这些资源。 的结构,则以下之一:
my-project
+ pom.xml
+-- commons
+-- persistence
+-- ...
+-- web-app-1
+-- web-app-2
+-- ...
+-- web-resources
+-- pom.xml
+-- src/main/webapp
+-- web.xml (which is almost empty, just need to be present for Maven)
+-- web_resources
+-- css
+-- images
+-- javascript
的Maven
在Maven中2(或Maven 3,如我刚迁移我的项目到Maven 3.0.2),这样的配置是易于管理所有web-app-X
声明web-resources
作为一个依赖:
<groupId>foo.bar</groupId>
<artifactId>web-app-1</artifactId>
...
<dependencies>
<dependency>
<groupId>foo.bar</groupId>
<artifactId>web-resources</artifactId>
<version>${preclosing-version}</version>
<type>war</type>
</dependency>
...
所以,当我建立我的WAR项目,它首先获得web-resources.war
(之前构建),解压缩,并在其上构建web-app-X
网络应用程序。 这样,我的WAR文件将包含一个名为web-resources/
的目录,其中包含共享资源。
这是战争叠加原则。
因此,从Maven的角度来看,一切都很好!
的Eclipse
现在,来这里的主要问题:有一个良好的Eclipse配置。
问题:如何使用我当前的配置来由Eclipse正确管理?特别是,当我部署使用Eclipse在Tomcat中任何web-app-X
...
注意,我想获得更多的automatizable(?)的配置,并且避免任何手动步骤,因为这样的配置应该由数十名开发人员使用。 ..
对我来说,最好的解决方案似乎使用Eclipse的链接资源。因此,我在我的web-app-X
pom中设置了以下配置。XML:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-eclipse-plugin</artifactId>
<configuration>
<wtpversion>1.5</wtpversion>
<linkedResources>
<linkedResource>
<name>web_resources</name>
<type>2</type>
<location>${project.basedir}\..\web-resources\src\main\webapp\web_resources</location>
</linkedResource>
</linkedResources>
</configuration>
</plugin>
...
当我运行mvn eclipse:eclipse
配置,它成功地增加了我的.project
文件这样的信息:
<projectDescription>
...
<linkedResources>
<link>
<name>web_resources</name>
<type>2</type>
<location>C:\dev\project\web-resources\src\main\webapp\web_resources</location>
</link>
</linkedResources>
<projectDescription>
现在,我输入我的Eclipse项目。 问题:在Project properties > Java Build Path > Source
中,我看不到链接源。 我只看到我的四个Maven默认目录(src/main/java
,src/main/resources
,src/test/java
和src/test/resources
)。 奇怪的是,当我尝试手动添加链接的资源,它拒绝,并说,它已经存在......
所以,当我在Eclipse我的Tomcat部署我的web应用程序,它不部署web_resources目录,因此我没有获得部署的CSS/JS /图像。
一些测试之后,似乎我要做两处修改:
- 添加行
<classpathentry kind="src" path="web_resources" output="src/main/webapp/web_resources"/>
我.classpath
文件; - 删除
.project
文件中的<project>preclosing-web-resources</project>
。
注意,使用此配置,Eclipse将拷贝(并保持同步)web_resources项目的内容在我的web-app-X/src/main/webapp/web_resources
,但这不是问题(这个目录是由单片机忽略)。
唯一的自动化的解决方案,我发现是创建一个简单的Maven插件,做前两个变型中,然后运行下面的命令(或使用bat文件):
mvn eclipse:clean eclipse:eclipse myEclipsePlugin:eclipse
问题
- 有没有更好的方法来管理这种配置?
技术信息
的Java 6,Maven的3.0.2,Maven的Eclipse插件2.8时,Eclipse 3.3.2(但我可以与Eclipse的新版本测试),没有的m2eclipse插入。