Java maven可重用资源项目可行吗?
是否有能力构建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
动机如下。我有一个只包含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有效实现的副本,我希望这个周末能读到它。