我有一个问题,当我从Intellij 15.0.2运行Maven构建时,Maven Resources Plugin不会将我的属性过滤到我的文件中.当我mvn compile从Windows命令行运行时,它确实有效.我的插件配置是:
<properties>
<prop1>aaa</prop1>
<prop2>bbb</prop2>
</properties>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.7</version>
<configuration>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>file1</include>
<include>file2</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>resources</goal>
</goals>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud) filtering properties intellij-idea maven maven-resources-plugin
在src/test/resourcesmaven项目的文件夹中,有一个相对的符号链接.
使用2.6插件版本,将复制实际文件.
更新到3.0.1版本后,它会复制链接而不是文件,并在后续运行(不干净)失败(mvn -e显示它是因为a FileAlreadyExistsException).
是否有任何配置选项来恢复以前版本的行为?
我同意,将链接作为测试资源是一个非常糟糕的主意.
我有一个POM,其中包含以下内容:
<properties>
<prop1>xxxxxxxxxx</prop1>
</properties>
<build>
<finalName>${project.artifactId}-${project.version}</finalName>
<resources>
<resource>
<directory>src/test/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
Run Code Online (Sandbox Code Playgroud)
我在下面有一个属性文件src/test/resources:
p1=${prop1}
Run Code Online (Sandbox Code Playgroud)
我的目标是将.properties文件复制到target/test-classes目录中并自动更改p1的值。但这行不通。它复制资源,但不更改值。
我很难理解Maven 中的maven-resources-plugin和project.build.resources标签之间的区别。
两者似乎都有相同的目的。[resources、testResources 和 copy-resources]的不同目标maven-resources-plugin也可以使用 resources 标签来实现:
<resources>
<resource>
<directory>src/dir</directory>
<targetPath>dest/dir</targetPath>
</resource>
</resources>
<testResources>
<testResource>
<directory>src/test/dir</directory>
</testResource>
Run Code Online (Sandbox Code Playgroud)
并且使用<resources>标签可以有效地将源目录中的指定文件复制到目标目录,copy-resources类似于maven-resources-plugin.
那么,它们之间有什么区别吗?
它们在任何特定场景下的功能会有所不同吗?
我正在尝试构建 Maven 项目,但根本无法正常工作。
这是我的 POM.xml
<<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>com.Data.Maven</groupId>
<artifactId>Hadoop</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
<version>2.5</version>
</dependency>
</dependencies>
<build>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
</plugin>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>2.5</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
Run Code Online (Sandbox Code Playgroud)
设置.xml
<repositories>
<repository>
<id>cloudera</id>
<url>https://repository.cloudera.com/artifactory/cloudera-repos</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<repository>
<id>central</id>
<url>http://repo.maven.apache.org/maven2/</url>
</repository>
<repository>
<id>forplay-legacy</id>
<url>http://forplay.googlecode.com/svn/mavenrepo</url>
</repository>
<repository>
<id>org.apache.maven.plugins</id>
<url>https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-resources-plugin</url>
</repository>
<repository>
<id>org.apache.maven.plugins</id>
<url>https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-compiler-plugin</url>
</repository>
</repositories>
Run Code Online (Sandbox Code Playgroud)
错误
[错误] 插件 org.apache.maven.plugins:maven-compiler-plugin:3.1 或其依赖项之一无法解析:无法读取 org.apache.maven.plugins:maven-compiler-plugin:jar 的工件描述符:3.1:无法从中央( https://repo.maven.apache.org/maven2 )传输工件org.apache.maven.plugins:maven-compiler-plugin:pom:3.1:java.lang.RuntimeException:意外错误:java.security.InvalidAlgorithmParameterException:trustAnchors 参数必须非空
错误说它无法从 …
在几个项目中,我有一些我想要共享的资源(特别是Flyway数据库迁移脚本).
是否有可能将这些共享资源作为Maven工件存在,并且在构建之前Maven解析该依赖关系并将工件的内容解压缩到/src/main/resources/?如果是这样,怎么会这样呢?
我使用maven-resources-plugin从不同的项目树复制单个WSDL文件,如下所示:
<execution>
<id>copy-wsdl-and-rename-it</id>
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/src/main/wsdl</outputDirectory>
<resources>
<resource>
<directory>${basedir}/../myws/src/main/wsdl</directory>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
Run Code Online (Sandbox Code Playgroud)
这很好用,但现在我需要将该wsdl目录下的(单个)文件重命名为其他内容(例如,从myws.wsdl源目录到my.wsdl目标目录).
有没有办法实现这一点,使用maven-resources-plugin,而不是诉诸另一个插件?
通常,我的 POM 文件工作正常,所有单元测试都通过,所有工件都正确打包。但是,一旦我添加了这个 maven-resources-plugin 来根据配置文件创建特定的配置,我的所有测试都会失败,因为“src/test/resources”中的任何内容都没有被复制到“test-classes”:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.7</version>
<configuration>
<overwrite>true</overwrite>
<outputDirectory>${project.build.directory}/${config.dir}/${project.activeProfiles[1].id}</outputDirectory>
<resources>
<filtering>true</filtering>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
我不明白为什么这会阻止测试资源的复制。有任何想法吗?
由于其中一种资源中存在冒号(':'),因此我无法创建Maven原型。我有一个包含该符号的Spring XML:
<property name="maxSize" value="${ws.client.pool.maxSize:5}"/>
Run Code Online (Sandbox Code Playgroud)
启动原型时,出现以下错误:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-archetype-plugin:2.2:generate
(default-cli) on project standalone-pom:
org.apache.maven.archetype.exception.ArchetypeGenerationFailure: Error merging velocity templates:
Encountered ":5}\"/>\n\t</bean>\n\t\n\t<bean id=\"fooServiceClient\" class=\"org.springframework.aop.framework.ProxyFactoryBean\">\n\t <property name=\"targetSource\" ref=\"fooServiceClientPoolTargetSource\"/>\n\t</bean>\n\n</beans>\n"
at line 15, column 69 of archetype-resources/src/main/resources/spring/library.ws-client.xml
[ERROR] Was expecting one of:
[ERROR] "}" ...
[ERROR] <DOT> ...
[ERROR] "(" ...
[ERROR] -> [Help 1]
[ERROR]
Run Code Online (Sandbox Code Playgroud)
我尝试在原型的pom中配置转义字符:
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-archetype-plugin</artifactId>
<version>2.0</version>
</plugin>
<!-- Resources configuration -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.5</version>
<configuration>
<encoding>UTF-8</encoding>
<escapeString>\</escapeString>
</configuration>
</plugin>
</plugins>
</pluginManagement>
Run Code Online (Sandbox Code Playgroud)
但是它仍然不起作用。在这种情况下:
<property name="maxSize" value="${ws.client.pool.maxSize\:5}"/> …Run Code Online (Sandbox Code Playgroud) 这是我的项目目录结构:
这是我的 pom.xml:
<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>borsa</groupId>
<artifactId>borsa</artifactId>
<version>1</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
<build>
<finalName>aggiornamento</finalName>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>prepare-package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>
${project.build.directory}/dist/libs
</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6</version>
<configuration>
<outputDirectory>${basedir}/target/dist</outputDirectory>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>libs/</classpathPrefix>
<mainClass>
borsa.Application
</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20.1</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<groupId>org.jsoup</groupId> …Run Code Online (Sandbox Code Playgroud)