2009-09-08 22 views
15

Ben maven gibi. Hatta çok çok beğendim. Ben Ant kendisine geçtiğinden beri ben vb bağımlılıkları idaresi için dosyaları oluşturmak bina, eserlerin saatlik sürü kurtardı ve benim kaynak kontrol deposundaki alan bir sürü kaydettiniz.Azaltıcı ayrıntı (ya: bir fan tarafından Maven bir eleştiri)

sorun maven dosyaları çok ayrıntılı olmasıdır. Daha az ayrıntıya sahip olan Ant dosyaları değil, onların ayrıntıları yaptıklarına uygun değildi. yazma yerine Örneğin

, :

<dependencies> 
<dependency> 
    <groupId>commons-logging</groupId> 
    <artifactId>commons-logging</artifactId> 
    <version>1.1.1</version> 
<dependency> 
    <groupId>com.myosproject</groupId> 
    <artifactId>superlibrary</artifactId> 
    <version>7.5</version> 
</dependency> 
<dependency> 
    <groupId>junit</groupId> 
    <artifactId>junit</artifactId> 
    <version>3.8.1</version> 
    <scope>test</scope> 
    </dependency> 
</dependencies> 

Ben

<dependencies> 
    commons-logging/commons-logging/1.1.1 
    com.myosproject/superlibrary/7.5 
    test:junit/junit/3.8.1 
</dependencies> 

Ya

<build> 
    <plugins> 
     <plugin> 
      <artifactId>maven-compiler-plugin</artifactId> 
       <configuration> 
        <source>1.5</source> 
        <target>1.5</target> 
       </configuration> 
     </plugin> 
    </plugins> 
yerine
gibi yazma şey istiyorum

yerine yazma, ben

<build version="1.5"/> 

Ve istiyorum (son örneği ve biz yapılır): Ben istiyorum

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>native2ascii-maven-plugin</artifactId> 
    <executions> 
     <execution> 
      <goals> 
       <goal>native2ascii</goal> 
      </goals> 
      <configuration> 
      <encoding>UTF8</encoding> 
       </configuration> 
     </execution> 
    </executions> 
</plugin> 

şey yazmak zorunda değil . Yani, maven, native2ascii klasörünün varlığını algılar ve 'u varsayılan olarak doğru olanı yapar.

Ben eklentiler ve diğer şeyler ile dahili işlevselliği karıştırma, ancak aracı ile çok mutlu bir maven kullanıcıya ait açısından bakmaya deneyin am biliyorum, ama o daha mutlu olabileceğini düşünüyor.

Yani:

  1. bu şekilde çalışmaya ben maven yapılandırabilirsiniz bir yolu var mı? (Ve bunu yapmak akıllıca olur)

  2. Belki de bunun farkında olmadığım başka bir araç var mı?

+2

+ 1 Sorunuzun iyi ruhu için :) –

cevap

9

Maven yapılandırma kesinlikle ayrıntılı olduğunu, Maven 3 diğer şeyler (bazı fikir için these videos bakınız) arasında bu ele almayı amaçlamaktadır ve YAML tanımlanmalıdır için yapılandırma için izin veren bir plugin for Maven 2 yoktur. Ayrıca, nitelikleri destekleyen ve yapılandırmanın boyutunu azaltan bir experimental "terse" branch da var.Örneğin

:

groupId: org.twdata.maven 
artifactId: maven-yamlpom-plugin 
version: 1.0-SNAPSHOT 
packaging: maven-plugin 
name: YAML POM Plugin 
dependencies: 
    - { groupId: org.apache.maven, artifactId: maven-plugin-api, version: 2.0 } 
    - { groupId: SnakeYAML, artifactId: SnakeYAML, version: 1.1 } 
    - { groupId: commons-io, artifactId: commons-io, version: 1.4 } 
    - { groupId: dom4j, artifactId: dom4j, version: 1.4 } 
    - { groupId: junit, artifactId: junit, version: 3.8.1, scope: test } 
    - { groupId: xmlunit, artifactId: xmlunit, version: 1.2, scope: test } 
build: 
    plugins: 
    - artifactId: maven-compiler-plugin 
     configuration: 
    source: 1.5 
    target: 1.5 
repositories: 
    - id: snakeyaml 
    name: SnakeYAML repository 
    url: http://snakeyamlrepo.appspot.com/repository 

Maven 2 ile, alıntı örneklerde, bir ana projede ortak yapılandırmasını tanımlayarak ayrıntı azaltabilir bağımlılıklar tüm ebeveyn tanımlanabilir ya da bir ebeveyn dependencyManagement bölümünde bu nedenle bir çocuk bir iyileşme biraz olan

<dependency> 
    <groupId>junit</groupId> 
    <artifactId>junit</artifactId> 
</dependency> 

olarak jUnit bağımlılık ilan edebilir.

Eklentiler hem ebeveyn olarak bildirilebilir hem de çocuğunuzda tanımlanmasına gerek yoktur.

4

Pom.xml'in bazı bölümlerinin özellikle <dependencies> bölümünün yoğunlaştırılabileceğini size katılıyorum.

Gerçekten ilan bağımlılıkları Ivy yolu gibi:

<dependencies> 
    <dependency org="commons-lang" name="commons-lang" rev="2.0"/> 
    ... 

ben Ivy gibi bağımlılıklar oluşturmak için bir deney aracı önerdiği blog post gördüm. Ancak, hiç denemedim.

+0

Sadece Maven'liler XML hakkında düzgün bir şekilde bilgi edinmekle uğraştılarsa, özellikle de 'nitelikler' var, başlamadan önce ... beni başlatmadım bile . –

İlgili konular