我有一个maven项目,需要从另一个打包为战争的maven项目中复制webapp / WEB-INF /资源。 我该怎么做 ? 建议
答案 0 :(得分:1)
我可以看到一些替代方案:
如果资源被过滤,如果您想要过滤版本,则可能会遇到解决方案1的问题;如果您想要源版本,则可能会遇到2,3。
希望这有帮助。
答案 1 :(得分:1)
正如Bittrance所说,你应该使用maven依赖插件。
更好的方法是创建包含所有共享资源的项目,可能是使用程序集插件构建的类型zip。这是一个很好的“maven方式”。这比打开战争更好。
然后,参考
<dependency>
<groupId>com.mygroup/groupId>
<artifactId>my-dependencies</artifactId>
<version>1.0.0</version>
<type>zip</type>
</dependency>
接下来,您使用maven依赖插件解压缩您的资源,在您选择的目录中(可能是WEB-INF /?)
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>unpack-cfg-test-resources</id>
<goals>
<goal>unpack-dependencies</goal>
</goals>
<phase>resources</phase>
<configuration>
<outputDirectory>${project.build.directory}/WEB-INF/</outputDirectory>
<includeArtifacIds>my-resources</includeArtifacIds>
<excludeTypes>pom</excludeTypes>
<excludeTransitive>true</excludeTransitive>
</configuration>
</execution>
</executions>
</plugin>
我不确定这个代码片段(为了其他目的而写),但这是一个例子。 有关详情,请点击以下链接:http://maven.apache.org/plugins/maven-dependency-plugin/
如果您无法共享包含文件的公共项目,您可以解压缩包括ftl(或任何您想要的)的战争,但它不是一个真正干净的解决方案;)
有很多帖子涉及这个主题: Unzip dependency in maven ... 只需尝试使用关键字maven-dependency-plugin,unpack:)
希望能帮助你。
答案 2 :(得分:0)
(这假设您的依赖项目是java(jar)而不是其他Web应用程序,如果它是webapp我认为解决方案类似)。
我建议采用(略微)不同的方法:
而不是从战争中读取资源,将其添加到你的战争pom,在工件中生成一个jar以及战争:
<!DOCTYPE html>
<html>
<head>
<title>Learning JavaScript</title>
<script src = "https://d3js.org/d3.v3.min.js"></script>
</head>
<body>
<script>
d3.csv("data.csv", function(d){
console.log(d);
})
</script>
</body>
</html>
这是你的消费pom,所以生成的jar将被加载:
<!-- maven war plugin config -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<configuration>
...
<attachClasses>true</attachClasses>
<classesClassifier>some-string</classesClassifier>
</configuration>
<artifactId>maven-war-plugin</artifactId>
<version>3.0.0</version>
</plugin>
...
<resources>
<!-- This is for inclusion in the jar, so dependent module can load it -->
<resource>
<targetPath>some-path</targetPath>
<directory>src/main/webapp/path...</directory>
<includes>
<include>your-resource</include>
</includes>
</resource>
</resources>
然后您将能够以通常的方式加载资源(<dependency>
<groupId>com.company</groupId>
<artifactId>...</artifactId>
<classifier>some-string</classifier>
</dependency>
)