Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java maven可重用资源项目可行吗?_Java_Maven 2_Pom.xml - Fatal编程技术网

Java maven可重用资源项目可行吗?

Java maven可重用资源项目可行吗?,java,maven-2,pom.xml,Java,Maven 2,Pom.xml,是否有能力构建maven工件,它只包含资源而不包含源代码,并且可以被其他项目重用 动机如下。我有一个只包含html/css/javascript代码的库。此库必须作为资源打包到war项目中。到目前为止,我通过单个pom使用资源构建web存档。但我能将html/css/javascript代码分离成新的工件并在几个war项目中重用吗?您可以使用它。我不认为maven会阻止您将一些资源组合在一起,并将其作为依赖项添加到web项目中 然而,您需要引用资源的方式会有点奇怪。 我不习惯将css样式表作为j

是否有能力构建maven工件,它只包含资源而不包含源代码,并且可以被其他项目重用


动机如下。我有一个只包含html/css/javascript代码的库。此库必须作为资源打包到war项目中。到目前为止,我通过单个pom使用资源构建web存档。但我能将html/css/javascript代码分离成新的工件并在几个war项目中重用吗?

您可以使用它。

我不认为maven会阻止您将一些资源组合在一起,并将其作为依赖项添加到web项目中

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


我想将它们称为普通web资源,相对于WAR文件的根,而不是通过类加载器。这是一个非常简单的测试:

$ 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

例如,在
validate
阶段,可以通过震击资源工件并将其解压到war项目中的src/main/resources中来实现。资源pom微不足道,但war 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>

org.apache.maven.plugins
maven依赖插件
打开
验证
打开
我的公司
资源工件
1
真的
src/main/resources

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

是的,我不需要资源来进行调整。我需要它们存在于我的web文件夹和web存档中,以静态方式引用它们,而不是通过类加载器。@Volodymyr请查看我链接的用户指南,它还包含示例。如果您有一个更具体的问题,并告诉我们关于您的项目的更多细节,我们可以给您更具体的答案:-)据我所知,它是最终的,不能重复使用。不是吗?如果是这样,他们不适合做我需要的事情。使用maven assembly插件,我可以为资源库创建分发程序集。在我的war pom中,我甚至可以使用这个工件作为依赖项。在这种情况下,我将获得target\war-artifact-1.0\WEB-INF\lib\resource-artifact-1.0.jar,而不是解压缩到target\war-artifact-1.0\文件夹中的分发程序集的内容。在提供的指南中,我找不到任何方法将分发程序集提取到web archive的根目录中。@Volodymyr您可以指定程序集的包格式-它也可以是普通目录结构。OTOH,我相当确信你可以将一个jar解压到一个特定的目录中,例如,一个ant任务通过antrun插件执行。程序集的éter包格式并不重要。装配是最终的,无论如何都不能重复使用。看起来汇编插件在我的情况下不起作用。将资源jar解压到src/main/resources文件夹中可以正常工作。我已经找到了这个解决方案,并在单独的答案中用pom示例描述了它。但是这种方法与汇编插件没有任何共同之处:-)我需要两个项目,而不是一个。第一个项目应该包含资源。第二个项目应该包括第一个项目到war中的资源。然后,war覆盖是您想要的,我现在可以看出,覆盖正是我需要的。@Pascal Thivent您似乎对maven文档很了解,它写得很好,但如果您问我的话,它的结构很糟糕。。是否有一个包含从a到z的所有文档的链接,也许我可以找到一些我以后可以使用的东西,也许甚至是现在,但我不知道它是否存在+1@c0mrade文档是人们经常抱怨的东西,所以我想你是对的(信息在那里,但很难找到,这正是你所说的)。幸运的是,我现在知道该去哪里找或搜索什么了。但是有一些好书可以帮助你,例如(在线提供)或。强烈推荐。谢谢pascal,我已经阅读了maven by example一书(对于maven noobs来说是一本非常好的书),我还没有阅读maven by reference一书,我还得到了ApacheMaven 2有效实现的副本,我希望这个周末能读到它。