我第一次尝试使用maven配置文件。 在我们的项目中,我们有几个依赖项(人们期望:))。 现在我们要创建一个配置文件,所有依赖项都将“scope”作为“提供”
所以有两个配置文件,一个配置文件
<scope>provided</scope>
,没有范围。
我的问题是在创建包含多个配置文件的pom.xml时,会重复很多行。基本上,两个配置文件在依赖关系部分中具有相同的行集,但<scope>provided</scope>
我正试图找到缩短此文件的方法。我正在寻找实现这一目标的方法。我找不到好的解决方案。所以在这里发一个问题。希望有人遇到过这个,可以帮助我。
这就是我的pom.xml现在的样子: 有没有办法缩短线条?删除我在pom.xml中的所有重复内容?感谢。
<?xml version="1.0" encoding="UTF-8"?>
<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">
<parent>
<artifactId>steel-thread</artifactId>
<groupId>com.securityx</groupId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>feature-service</artifactId>
<version>1.0.0-SNAPSHOT</version>
<properties>
<junit.version>4.11</junit.version>
<joda.time.version>2.3</joda.time.version>
<joda.convert.version>1.6</joda.convert.version>
<log4j.version>1.2.16</log4j.version>
<guava.version>16.0.1</guava.version>
<hbase.version>0.98.6-cdh5.2.1</hbase.version>
<solr.version>4.4.0-cdh5.2.1</solr.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<dependencies>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-client</artifactId>
<version>${hbase.version}</version>
</dependency>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>${joda.time.version}</version>
</dependency>
<dependency>
<groupId>org.joda</groupId>
<artifactId>joda-convert</artifactId>
<version>${joda.convert.version}</version>
</dependency>
</dependencies>
</profile>
<profile>
<id>prod</id>
<dependencies>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-client</artifactId>
<version>${hbase.version}</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>${joda.time.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.joda</groupId>
<artifactId>joda-convert</artifactId>
<version>${joda.convert.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>
</profile>
</profiles>
<build>
<!--<sourceDirectory>src/main/scala</sourceDirectory>-->
<!--<testSourceDirectory>src/test/scala</testSourceDirectory>-->
<pluginManagement>
<plugins>
<plugin>
<groupId>org.scala-tools</groupId>
<artifactId>maven-scala-plugin</artifactId>
<version>2.15.2</version>
</plugin>
</plugins>
</pluginManagement>
<!-- To use the plugin goals in your POM or parent POM -->
<plugins>
<plugin>
<groupId>org.scala-tools</groupId>
<artifactId>maven-scala-plugin</artifactId>
<executions>
<execution>
<id>compile</id>
<goals>
<goal>compile</goal>
</goals>
<phase>compile</phase>
</execution>
<execution>
<phase>process-resources</phase>
<goals>
<goal>add-source</goal>
<goal>compile</goal>
</goals>
</execution>
</executions>
<!--<configuration>-->
<!--<args>-->
<!--<!– <arg>-make:transitive</arg>–>-->
<!--<arg>-g:notailcalls</arg>-->
<!--<!– <arg>-feature</arg> –>-->
<!--</args>-->
<!--</configuration>-->
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<!-- Create a fat jar -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>1.6</version>
<configuration>
<createDependencyReducedPom>true</createDependencyReducedPom>
<!-- Exclude all duplicates -->
<filters>
<filter>
<artifact>org.apache.avro:avro-tools</artifact>
<excludes>
<exclude>org/slf4j/**</exclude>
<exclude>org/apache/avro/**</exclude>
<exclude>org/codehaus/jackson/**</exclude>
<exclude>com/thoughtworks/**</exclude>
<exclude>org/apache/commons/**</exclude>
<exclude>org/tukaani/xz/**</exclude>
<exclude>org/xerial/snappy/**</exclude>
<exclude>javax/servlet/**</exclude>
<exclude>org/apache/hadoop/**</exclude>
</excludes>
</filter>
<filter>
<artifact>org.apache.phoenix:phoenix-client-minimal</artifact>
<excludes>
<exclude>org/slf4j/**</exclude>
<exclude>org/apache/log4j/**</exclude>
<exclude>com/google/common/**</exclude>
<exclude>org/codehaus/jackson/**</exclude>
<exclude>org/apache/avro/**</exclude>
</excludes>
</filter>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<!-- The service main class -->
<mainClass>com.securityx.modelfeature.FeatureService</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
<!-- Embed the project version in the JAR’s manifest as the Implementation-Version -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<archive>
<manifest>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>scala-maven-plugin</artifactId>
<version>3.1.6</version>
</plugin>
</plugins>
</build>
</project>
答案 0 :(得分:0)
公共依赖项位于单个根级<dependencies/>
节中的配置文件之外。这些都有很好的记录。