问题标签 [maven-resources-plugin]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
8295 浏览

android - android-maven-plugin 和资源过滤

我是 maven 的新手,并尝试将其配置为使用 android-maven-plugin 构建我的 android 项目。我在 assets 目录中有一个 application.properties 文件,其中包含不同的应用程序设置。我想从我的 pom.xml 中获取这些值。在属性文件中,我将一个属性定义为

并在 POM 中定义相同的属性:

打开对资产目录的过滤

并按照android-maven-plugin的示例配置资源插件

但是,当我尝试在我的应用程序中使用此属性显示 Toast 时,我看到的是 ${helloFromPOM} 而不是我的属性。

在我由 maven 生成的目标目录中,我在两个地方看到了这个属性文件:

  • /target/generated-sources/combined-assets/assets/application.properties
  • /target/myapp-0.0.1-SNAPSHOT.apk\application.properties

首先是错误的,它包含 ${helloFromPOM} 而不是 MY PROPERTY。二、里面的apk文件是正确的。但是当我在设备上安装这个 apk 时,它会显示错误的值 ${helloFromPOM}。

我做错什么了?

编辑

感谢您的回答,我试过了,但得到这个错误:

[错误] 生成源时出错。org.apache.maven.plugin.MojoExecutionException:在 com.jayway.maven.plugins.android.phase01generatesources.GenerateSourcesMojo.execute( GenerateSourcesMojo.java:102) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) at org.apache .maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) 在 org.apache.maven.lifecycle.internal.LifecycleModuleBuilder .buildProject(LifecycleModuleBuilder.java:84) 在 org.apache.maven.lifecycle。 http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

当我<resourceDirectory>${project.build.directory}/filtered-assets</resourceDirectory>在 POM 中评论时,构建完成成功,但它不使用过滤的资产。

我也尝试cmd.exe /X /C ""C:\Program Files\Android\android-sdk\platform-tools\aapt.exe" package -m -J D:\projects\myapp\target\generated-sources\r -M D:\projects\myapp\AndroidManifest.xml -S D:\projects\myapp\target\filtered-assets --auto-add-overlay -A D:\projects\myapp\assets -I "C:\Program Files\Android\android-sdk\platforms\android-8\android.jar""在我的命令行中执行这个并得到这个错误:invalid resource directory name: D:\projects\myapp\target\filtered-assets/application.properties。过滤后的资产后使用错误的斜线而不是反斜线。更改<resourceDirectory>${project.build.directory}/filtered-assets</resourceDirectory><resourceDirectory>${project.build.directory}\filtered-assets</resourceDirectory>也无济于事。

PS我的插件部分看起来像这样

0 投票
3 回答
36847 浏览

maven - 使用复制资源目标的 maven-resources-plugin 错误:“resources”、“outputDirectory”丢失或无效

我正在尝试使用 maven-resources-plugin 使用 copy-resources 目标进行一些过滤,并遇到以下错误:

为了隔离问题,我创建了一个非常简单的 pom.xml,从http://maven.apache.org/plugins/maven-resources-plugin/examples/copy-resources.html几乎逐字复制,运行它,得到同样的错误。

我正在调用它

有任何想法吗?这是测试 pom.xml。

0 投票
1 回答
2156 浏览

maven - maven-resources-plugin 和 project.build.resources 标签有什么区别?

我很难理解 Maven 中的maven-resources-pluginproject.build.resources标签之间的区别。

两者似乎有相同的目的。[resources、testResources 和 copy-resources]的不同目标maven-resources-plugin也可以使用 resources 标签来实现:

并且使用<resources>标签将有效地将源目录中的指定文件复制到目标目录,copy-resources类似于maven-resources-plugin.

那么,它们之间有什么区别吗?
在任何特定情况下,它们的功能会有所不同吗?

0 投票
0 回答
237 浏览

java - 在开发过程中实际调用 maven-resources-plugin(并在代码中使用变量)?

我想使用来自 maven 的信息在 .properties 文件中定义属性;例如 app.name=project.build.artifactId。

如果我在构建时调用资源:资源,它会在我的目标文件夹(在 eclipse 中)中创建一个名为 *.properties 的文件,其中包含 app.name 和(希望)我的 artifactId。

但是,当我通过 eclipse 运行 java 应用程序时,它是使用 /target 中的文件,还是使用 /src/main/resources 中的版本(其中包含变量占位符而不是值本身)?

编辑:

这是我希望使用“过滤”值的代码:

来自项目的 POM.xml 的相关信息:

project.properties 内容:

当我通过 Eclipse 运行项目(不执行 JAR)时,第一段的输出(在静态块中)按字面意思返回“${project.build.version}”。它实际上并不返回项目标签的值。

我什至尝试过运行 resources:resources 首先查看是否有任何作用,但没有。资源过滤究竟是如何工作的——或者更好的是,你应该什么时候真正使用它?

0 投票
1 回答
770 浏览

unit-testing - 如何使用maven资源插件中的maven过滤功能

我有一个在 Maven 的帮助下开发的 java 项目。该项目的一部分是单元测试。我计划将单元测试生成的所有临时文件放入 maven 的目标目录中。这可能是一个好主意,因为如果由于某种原因临时文件没有被单元测试删除,则可能会清理目标目录,并且所有临时文件仍然存在于文件系统中。所以我找到了 maven 资源插件的过滤功能,想知道是否可以为我的用例实例化它。我的计划是在属性文件中有一个像这样的条目

它应该为我提供一个显示 Maven 目标目录位置的属性。现在,需要注意的是,过滤后的属性文件由 maven 资源插件存储在目标目录中。
我怎么能在那里找到它?我需要属性文件来告诉我目标目录在哪里,但属性文件在目标目录中?我的方法还值得做吗?或者这种方式不可能?

0 投票
2 回答
5472 浏览

maven - 如何使用/在 maven-remote-resources-plugin 中

我正在尝试按照示例使用 maven-remote-resources-plugin 在多个 maven 模块之间选择性地共享公共资源,并且我在选择性导入资源时遇到了很多困难。

我正在尝试使用<includes><excludes>元素,如下所示。我没有在任何地方看到 doco 中提到的插件,但是 eclipse 在命令完成中将它们作为有效选项提供,并且在运行 pom.xml 时我没有收到任何错误。到目前为止,我还无法获得<includes><excludes>对导入的资源产生任何影响

我的pom的相关部分是;

共享资源

资源消费者

我已经尝试了很多组合,<includes><excludes>到目前为止都没有任何影响。

那么,是

maven-remote-resources-plugin 配置的有效元素,以及如何使用它们?我可以合理地将资源分离到单独的 maven 模块中,但这可能会创建大量的单文件 maven 模块并添加大量额外的 xml,所以如果可能的话我想避免它。

我真的不想开始浏览插件源代码,但这是下一步。

0 投票
3 回答
3023 浏览

maven - 禁用 maven-remote-resources-plugin 的资源过滤

我正在尝试使用 maven-remote-resources-plugin 在多模块 maven 项目中跨模块共享许多资源。不幸的是,共享的二进制资源在捆绑过程中被破坏了,大概是通过过滤。

我相信这个阶段正在发生损坏,因为从我的本地存储库中提取共享资源 jar 包含损坏的二进制文件。

有什么可以关闭 maven-remote-resources-plugin 的过滤吗?

目前我的共享资源模块中的 pom 看起来像

0 投票
0 回答
261 浏览

maven - 使用多环境资源过滤的通用/默认属性?

我有一个具有以下属性文件结构的 Maven 项目:

等等等等。

90% 的属性在同一环境中的客户端之间都是相同的(例如,clientA 和 clientB 上的开发道具通常都是相同的)。但是,不能保证在每个客户端中相同的属性都相同。

我想做的是在根级别创建一个 common.[dev|staging|production].properties 文件,将所有公共属性移到那里,然后根据需要覆盖客户端属性文件中的公共属性,但这并没有' 似乎不受 Maven 支持,例如,我无法在用于过滤的两个属性文件中定义相同的属性,因为 Maven 仅在处理的第一个属性文件上使用该值。

我将如何在 Maven 中实现相同的功能?有没有其他方法可以解决这个问题?还是不可能?

这是我想做的事情:

过滤后的值应该是:

取而代之的是,目前发生的是:

资源:

资源插件配置

0 投票
1 回答
2415 浏览

maven - 使用 maven-assembly-plugin 生成 OSGi 包分发

我有一个多模块项目,其中每个模块都使用 Apache Felix maven-bundle-plugin 打包为 OSGi 包。整个项目是使用列出上述模块的父 POM 构建的。一些模块包含配置资源(例如 .properties 文件),这些配置资源不应在捆绑包中进行部署,而应在专用配置文件夹中外部化。我的目标是创建一个看起来像这样的分发文件夹(可能是一个 zip 文件):

其中目录下的属性文件/conf是从各个模块的文件夹中手工挑选的/target文件。.properties需要从目标文件夹与 src 文件夹中提取文件的原因是我正在使用 Maven 资源过滤,并且属性文件包含${..}特定于环境的值的占位符。这些占位符在构建过程中被正确解析 - 每个构建配置文件 - 并且target/文件夹包含实际的环境特定值。

我已经多次做过这样的分发文件操作——对于带有可执行 JAR 的分发等。在这种情况下,我想使用程序集描述符的“moduleSets”配置——很容易将所有二进制文件/jar 拉到一个分发文件夹中使用 moduleSet/二进制描述符。在 maven-bundle-plugin 中排除某些文件也很容易被打包到 OSGi 包中。我唯一遇到的问题是创建/conf分发文件夹并在那里收集必要的属性文件。我试图在“moduleSet/sources”描述符中使用“fileSets”来仅包含来自**/target每个模块的特定文件,但这似乎不起作用。

有人有建议/建议吗?必须有一个简单的方法。还是我根本不应该使用?

谢谢,

简历


@PetrKozelka 我不确定将特定于不同捆绑包的配置文件提取到单独的模块中是个好主意。OSGi 的全部意义在于捆绑包是独立的并且可能是可重用的——无论是在开发中还是在发行版中。仅在源代码中将功能实现和相关配置文件组合在一起才有意义。对于特定的发行版,尽管我可能需要提取一些文件——如果管理员需要控制某些参数。对于不同的分发/应用程序,这可能会有所不同。程序集配置可能会更改,但捆绑包/源将保持不变。此外,每个捆绑包都可能单独开发和使用,并非所有捆绑包都必须始终属于同一个 uber 项目 - 正如您所假设的那样。工件的类型(例如“模型”、“服务”、“数据访问”、“配置”等),而不是按功能域/特性。这种方法在单个应用程序/项目中运行良好,但在企业级别上失败,因为通常需要重用垂直组件的子集(按功能域划分)。

就您依赖模块中的文件布局而言,我同意不应该存在这种依赖关系。文件可以通过其明确的名称或命名约定来手工挑选 - 根据非常具体的发行版要求。(这正是我面临的情况。)

0 投票
2 回答
445 浏览

java - Maven 无法访问(现有的)pom 文件

我正在尝试java使用maven. 我已经用正确的click on pom file >> in (m2eclipse 连接器)Maven试过了Maven InstallEclipse

然后我在命令提示符下尝试了它mvn clean compile,但我得到了这个屏幕截图:

在此处输入图像描述

在我看来,即使我可以使用相同的 URL 在浏览器中访问 pom 文件,maven也无法访问。maven-filtering-1.0 file我是新手,maven不知道如何解决这个问题。任何帮助是极大的赞赏!