-1
我正在用maven配置文件第一次嘗試我的手。 在我們的項目中,我們有幾個依賴關係(人們會期望:))。 現在,我們要創建一個配置文件,爲此,所有的依賴將「範圍」爲「提供」Maven:Pofile:依賴Repetition
因此有兩個配置文件,一個與 <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>
謝謝。 但我的問題不是關於常見的依賴關係。 我有共同的依賴關係,但各個配置文件的作用域不同。 「提供 」 –
Roger
2015-02-11 21:17:56
消除重複意味着它們是常見的,你沒有一個共同的相關模塊在你發佈什麼 – 2015-02-11 21:34:40
列出的''外,你需要再次讀取的pom.xml爵士。 依賴關係並不完全普遍。 一個配置文件與scope = provided有依賴關係,其他不需要scope = provided –
Roger
2015-02-12 00:42:11