2015-02-11 45 views
-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>--> 
       <!--&lt;!&ndash;      <arg>-make:transitive</arg>&ndash;&gt;--> 
       <!--<arg>-g:notailcalls</arg>--> 
       <!--&lt;!&ndash; <arg>-feature</arg> &ndash;&gt;--> 
       <!--</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

常見依賴關係超出了單個根級別的配置文件<dependencies/>節。這都是非常有據可查的。

+0

謝謝。 但我的問題不是關於常見的依賴關係。 我有共同的依賴關係,但各個配置文件的作用域不同。 「提供」 – Roger 2015-02-11 21:17:56

+0

消除重複意味着它們是常見的,你沒有一個共同的相關模塊在你發佈什麼 – 2015-02-11 21:34:40

+0

列出的''外,你需要再次讀取的pom.xml爵士。 依賴關係並不完全普遍。 一個配置文件與scope = provided有依賴關係,其他不需要scope = provided – Roger 2015-02-12 00:42:11