- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想为一些源文件编写一个自定义资源过滤器,以便在前面添加一行
// @sourceURL=<path-to-file>
在资源过滤期间,其中<path-to-file>
是文件相对于 ${project.basedir}
的路径.
我关注了 Maven Custom resources filters文档,说我需要编写接口(interface)的自定义实现 MavenResourcesFiltering
.
查看org.apache.maven.shared.filtering.DefaultMavenResourcesFiltering
后我想写一个 MavenResourcesFiltering
从头开始实现并非易事。所以我正在寻找从 DefaultMavenResourcesFiltering
扩展的方法,并发现我需要为其提供自定义 MavenFileFilter
这实际上是在行前面添加。
现在我想到,除了复制 DefaultMavenResourcesFiltering
的整个源代码之外,没有办法做到这一点。 ,以便能够重新定义其 @Requirement
MavenFileFilter
的注释:
@Requirement
private MavenFileFilter mavenFileFilter;
也许有办法通过配置 Plexus DI container 来实现我的目标,也许通过Plexus Component Descriptor 。唉,这有点奇怪,也许有人知道类似问题的好例子?
最佳答案
Probably there are ways to achieve my goals by configuration of the Plexus DI container, perhaps by means of a Plexus Component Descriptor
是的,有办法。您需要覆盖 DefaultMavenResourcesFiltering
使用的 "default"
MavenFileFilter
组件,并提供您自己的组件。这很容易完成:只需为 MavenFileFilter
角色创建您自己的 Plexus 组件并覆盖 "default"
提示,并将其添加为资源插件的依赖项。由于类直接存在于插件的依赖项 are loaded first 下,它们将覆盖默认的。
设置如下。创建一个具有以下 POM 的新 Maven 项目:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>my.groupId</groupId>
<artifactId>my-file-filter</artifactId>
<version>0.0.1</version>
<dependencies>
<dependency>
<groupId>org.apache.maven.shared</groupId>
<artifactId>maven-filtering</artifactId>
<version>3.1.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-component-metadata</artifactId>
<version>1.6</version>
<executions>
<execution>
<goals>
<goal>generate-metadata</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
这依赖于 Maven Filtering共享组件,并声明 plexus-component-metadata
插件,以便自动生成 Plexus component.xml
(以便我们的类正确注册为 Plexus 组件)。
然后,自定义文件过滤器很简单:可以继承默认的文件过滤器,即 DefaultMavenFileFilter
:
@Component(role = MavenFileFilter.class, hint = "default")
public class MyMavenFileFilter extends DefaultMavenFileFilter {
public void copyFile(File from, File to, boolean filtering, List<FileUtils.FilterWrapper> filterWrappers, String encoding, boolean overwrite) throws MavenFilteringException {
super.copyFile(from, to, filtering, filterWrappers, encoding, overwrite);
// your logic of modifying the "to" file here
}
}
这只是覆盖了所有其他方法最终调用的 copyFile
方法,通过调用 super 方法确保默认行为仍然发生,然后执行自定义代码。在此部分中,您可以处理 to
文件并在其中添加所需的行。
使用 mvn clean install
安装此 Maven 项目后,您可以将其作为依赖项添加到资源插件中:
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.1</version>
<dependencies>
<dependency>
<groupId>my.groupId</groupId>
<artifactId>my-file-filter</artifactId>
<version>0.0.1</version>
</dependency>
</dependencies>
</plugin>
这是您的自定义文件过滤器,将被注入(inject)到 DefaultMavenResourcesFiltering
中。
关于java - 自定义 MavenResourcesFiltering 很难实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40216611/
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 9 年前。 Improve th
我有一个带有输入字段的表单,使用javascript,当用户输入超过2个字符时,它会在第一个输入字段下方创建相同的输入字段。其代码是: Optie 1: 1 && treated[this.na
这是我的: char userInput; int position; vector userVector(7); vector someVector(7,1); cin >> userInput;
尝试使用 typescript 和 redux 构建一个简单的 react crud 应用程序并遇到以下问题。我有一个具有指定签名的函数,它将一个人对象作为参数,如此处所示。 export defau
哦,我多么希望 TCP 像 UDP 一样基于数据包! [查看评论] 但是,唉,事实并非如此,所以我正在尝试实现我自己的数据包层。这是到目前为止的事件链(忽略写入数据包) 哦,我的数据包结构非常简单:两
我想在我的页面底部放置一个包含不同数量图片的栏,这些图片(如果比页面宽)可以左右滚动。 页面宽度在变化,我希望 Pane 的宽度为 100%。 我试图通过让中间的 div 溢出并使用 jquery.a
我曾尝试在工作时将我的 Rails 应用程序 bundle 到我的 Mac 上。在家里它运行良好,我之前已经设法自己解决了它,但这次无论我尝试什么似乎都无法解决它。 我在运行 bundle/bundl
所以我有一个旧的网络表单站点,并且正在努力使其更易于维护。把它扔掉并重写它不是一种选择。 IoC 显然是它首先得到的东西之一,但这给我留下了服务定位器模式和糟糕的品味,并且想知道它是否可以做得更好。
我是一名优秀的程序员,十分优秀!