maven可重用资源项目是否可行?

时间:2010-02-25 20:20:39

标签: java maven-2 pom.xml

是否有能力构建maven工件,该工件只包含资源但没有源,可以被其他项目重用?

动机如下。我有一个只包含html / css / javascript代码的库。必须将此库作为资源打包到war项目中。至于现在,我用单个pom构建带有资源的web存档。但我能否将html / css / javascript代码分成新工件并在多个战争项目中重复使用?

5 个答案:

答案 0 :(得分:9)

使用Maven Overlays。有关更多示例,请参阅Manipulating WAR Overlays

答案 1 :(得分:1)

您可以使用Maven assembly plugin

执行此操作

答案 2 :(得分:0)

我不认为maven会阻止你将一些资源拼凑在一起,并将其作为Web项目中的依赖项添加。

但是,您需要引用资源的方式会有点奇怪。 我不习惯在WEB-INF / lib中的jar文件中将css样式表加载为java资源。

我想将它们称为普通的Web资源,相对于WAR文件的根目录,而不是通过类加载器。

答案 3 :(得分:0)

这是一个非常简单的测试方法:

$ ls -R
.:
pom.xml  src

./src:
main

./src/main:
resources

./src/main/resources:
README.txt  content-is-here.txt

$ mvn package
... Maven doing it's thing...

$ unzip -l target/test-1.0-SNAPSHOT.jar
Archive:  target/test-1.0-SNAPSHOT.jar
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  02-25-2010 16:18   META-INF/
      123  02-25-2010 16:18   META-INF/MANIFEST.MF
       10  02-25-2010 16:18   content-is-here.txt
        0  02-25-2010 16:18   README.txt
        0  02-25-2010 16:18   META-INF/maven/
        0  02-25-2010 16:18   META-INF/maven/group/
        0  02-25-2010 16:18   META-INF/maven/group/test/
      626  02-25-2010 16:15   META-INF/maven/group/test/pom.xml
      106  02-25-2010 16:18   META-INF/maven/group/test/pom.properties
---------                     -------
      865                     9 files

答案 4 :(得分:0)

这可以通过激活资源工件并在validate阶段将其解压缩到war项目中的src / main / resources来完成。资源pom是微不足道的,但战争pom将包含以下内容:

 <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <executions>
       <execution>
          <id>unpack</id>
          <phase>validate</phase>
          <goals>
             <goal>unpack</goal>
          </goals>
          <configuration>
             <artifactItems>
                <artifactItem>
                   <groupId>my.company</groupId>
                   <artifactId>resource-artifact</artifactId>
                   <version>1.0</version>
                   <overWrite>true</overWrite>
                   <outputDirectory>src/main/resources</outputDirectory>
                </artifactItem>
             </artifactItems>
          </configuration>
       </execution>
    </executions>
 </plugin>