2010-08-11 4 views
13

Bazı kaynaklar için bir jar dosyasına eklemek istiyorum. Bunu "profille" yaptım ve bunları yapı bölümüne ekledim.maven kaynakları jar dosyasına yerleştirilmedi

Ancak kaynaklar son jar dosyasında değil.

<profile> 
    <id>myProfile</id> 
    <build> 
    <finalName>name</finalName> 
    <resources> 
     <resource> 
     <targetPath>.</targetPath> 
     <filtering>false</filtering> 
     <directory>${basedir}/profiles/myFolder</directory> 
     <includes> 
      <include>file.txt</include> 
      <include>file.xml</include> 
     </includes> 
     </resource> 
    </resources> 
    </build> 
</profile> 

Ve işte ben sorunu komut:

Sorun ne

İşte profilim pom.xml bölümü gider? Menteşe'de kaynaklar iki şekilde belirtilebilir.

cevap

11

POM snippet'iniz global olarak iyi görünüyor ve sorununuzu yeniden oluşturamıyorum. Aşağıdaki proje yapısıyla

<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.stackoverflow</groupId> 
    <artifactId>Q3459013</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    </dependencies> 
    <profiles> 
    <profile> 
     <id>myProfile</id> 
     <build> 
     <finalName>name</finalName> 
     <resources> 
      <resource> 
      <directory>${basedir}/profiles/myFolder</directory> 
      <filtering>false</filtering> 
      <includes> 
       <include>file.txt</include> 
       <include>file.xml</include> 
      </includes> 
      </resource> 
     </resources> 
     </build> 
    </profile> 
    </profiles> 
</project> 

: Burada

 
$ tree . 
. 
├── pom.xml 
├── profiles 
│   └── myFolder 
│    ├── file.txt 
│    └── file.xml 
└── src 
    ├── main 
    │   └── java 
    │    └── com 
    │     └── stackoverflow 
    │      └── App.java 
    └── test 
     └── java 
      └── com 
       └── stackoverflow 
        └── AppTest.java 

11 directories, 5 files 

Ve ne elde edilir:

 
$ mvn clean install -PmyProfile 
... 
$ cd target 
$ tree . 
. 
├── classes 
│   ├── com 
│   │   └── stackoverflow 
│   │    └── App.class 
│   ├── file.txt 
│   └── file.xml 
├── maven-archiver 
│   └── pom.properties 
├── name.jar 
├── surefire-reports 
│   ├── com.stackoverflow.AppTest.txt 
│   └── TEST-com.stackoverflow.AppTest.xml 
└── test-classes 
    └── com 
     └── stackoverflow 
      └── AppTest.class 
$ jar xvf name.jar 
    created: META-INF/ 
inflated: META-INF/MANIFEST.MF 
    created: com/ 
    created: com/stackoverflow/ 
inflated: file.xml 
inflated: com/stackoverflow/App.class 
inflated: file.txt 
    created: META-INF/maven/ 
    created: META-INF/maven/com.stackoverflow/ 
    created: META-INF/maven/com.stackoverflow/Q3459013/ 
inflated: META-INF/maven/com.stackoverflow/Q3459013/pom.xml 
inflated: META-INF/maven/com.stackoverflow/Q3459013/pom.properties 

İşleri beklendiği gibi İşte kullanılan pom.xml olduğunu.

+1

@Pascal: çok güzel cevap. Seninle aynı pom.xml var, ben de jar dosyasına uygun dosyaları dahil etmemeye devam ediyor. Daha sonra maven2'nin daha yeni bir versiyonunu deneyeceğim (benimki 2.0.9). Zaman ayırdığın için teşekkür ederim! – ssedano

+0

@Udo Gerçekten Maven 2.2.1'i kullanıyordum –

+0

@Pascal ve amra: Şimdi işe koyuldum teşekkür ederim! ama dosyaları kök klasörüne (jar) yerleştirmek istersem? targetPath> target/myProject çalışmıyor – ssedano

5

Basit olan sadece hedef/sınıf dizinine kopyalanan dizinlerdir. Yalnızca resource directories, filtering ve included/excluded files'u yapılandırabilirsiniz. Varsayılan kaynak dizini src/main/resources.

Karmaşık ayarlar için maven eklentisini yapılandırmanız gerekir. çalıştırdığınızda,following actions run yükleyin. Paketleme aşamasında maven-sources-pluginkaynakları ile çalışır: kaynaklar hedef.

Yapılandırma için yalnızca resources mojo parameters kullanın. Bakınız example.

Profillerinizi $ {projectdir}/profiles/myFolder konumuna taşıyın. profilleri/myfolder içerecek şekilde tek dosyaları içeriyorsa

<resources> 
    <resource> 
     <directory>profiles/myFolder</directory> 
     <includes> 
      <include>file.txt</include> 
      <include>file.xml</include> 
     </includes> 
    </resource> 
</resources> 

Sen atlayabilirsiniz kısmını içermektedir.

+0

Pascal'a söylediğim gibi, zaman ayırdığınız için teşekkür ederim, maven'i yükseltmeyi deneyeceğim ve sonuçları yayınlayacağım. Teşekkür ederim. – ssedano

3

Bu basit yapıyı deneyin, bu benim için çalışıyor.

<profile> 
     <id>myProfile</id> 
     <build> 
     <finalName>name</finalName> 
     <resources> 
      <resource> 
       <targetPath>webapp</targetPath> 
       <directory>src/main/webapp</directory> 
      </resource> 
      <resource> 
       <directory>src/main/resources</directory> 
      </resource> 
     </resources> 
     </build> 
    </profile> 
2

Sorun: <targetPath>.</targetPath>, sorunu gidermek için onu tekmelemek.

Kavanozu paketlemek için maven, hedef/sınıflar klasörünün içeriğini kullanır, aksi halde maven-jar-plugin kullanın ve neyin kopyalanacağını kendiniz yapılandırın.