2014-10-08 4 views
4

Я выполнил руководство here, чтобы установить JAR-файл в мой локальный репозиторий.Maven не читает POM при установке JAR в репозиторий

я выполнить следующую команду:

mvn org.apache.maven.plugins:maven-install-plugin:2.5.2:install-file -Dfile=log4j-weblayout-0.0.1-SNAPSHOT.jar 

Файл JAR построен с использованием Maven и содержит POM файл в его список его зависимостей. Файл внутри JAR имеет путь:

/META-INF/maven/in.ksharma/log4j-weblayout/pom.xml 

Maven устанавливает артефакт, но не читает его POM. Он создает пустой файл POM, который является недействительным любой информации зависимостей:

<?xml version="1.0" encoding="UTF-8"?> 
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>in.ksharma</groupId> 
    <artifactId>log4j-weblayout</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <description>POM was created from install:install-file</description> 
</project> 

Как я могу гарантировать, что POM внутри JAR является тот, который установлен?

Edit:

Содержание различных файлов внутри JAR следующим образом.

/META-INF/MANIFEST.MF:

Manifest-Version: 1.0 
Archiver-Version: Plexus Archiver 
Built-By: kshitiz 
Created-By: Apache Maven 3.1.0 
Build-Jdk: 1.8.0 

/META-INF/maven/in.ksharma/log4j-weblayout/pom.properties:

#Generated by Maven 
#Wed Oct 08 19:48:28 IST 2014 
version=0.0.1-SNAPSHOT 
groupId=in.ksharma 
artifactId=log4j-weblayout 

/META-INF/maven/in.ksharma/log4j-weblayout/pom.xml:

<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>in.ksharma</groupId> 
    <artifactId>log4j-weblayout</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>jar</packaging> 
    <url>https://github.com/Kshitiz-Sharma/log4j-weblayout</url> 
    <properties> 
     <maven.compiler.source>1.6</maven.compiler.source> 
     <maven.compiler.target>1.6</maven.compiler.target> 
    </properties> 
    <dependencies> 
     <!-- Compile dependencies --> 
     <dependency> 
      <groupId>org.apache.velocity</groupId> 
      <artifactId>velocity</artifactId> 
      <version>1.7</version> 
      <scope>compile</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.jooq</groupId> 
      <artifactId>joor</artifactId> 
      <version>0.9.3</version> 
      <scope>compile</scope> 
     </dependency> 
     <dependency> 
      <groupId>commons-io</groupId> 
      <artifactId>commons-io</artifactId> 
      <version>2.4</version> 
      <scope>compile</scope> 
     </dependency> 

     <!-- Provided dependencies --> 
     <dependency> 
      <groupId>log4j</groupId> 
      <artifactId>log4j</artifactId> 
      <version>1.2.16</version> 
      <scope>provided</scope> 
     </dependency> 

     <!-- Test dependencies --> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-core</artifactId> 
      <version>4.0.5.RELEASE</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.codehaus.groovy</groupId> 
      <artifactId>groovy-all</artifactId> 
      <version>2.1.8</version> 
      <scope>test</scope> 
     </dependency> 

    </dependencies> 
</project> 
+0

Можете ли вы просьба сообщить содержание пом внутри банки? –

+0

@ AndrésMongeMoreno См. Мое редактирование. –

+0

Вопрос: У вас есть существующая пом, которая может быть использована для создания артефакта ... почему бы просто не сделать: 'mvn install'? – khmarbaise

ответ

2

Я думаю, что вам нужно извлечь pom.xml из кувшина и указать его с помощью pomFile property следующим образом:

mvn org.apache.maven.plugins:maven-install-plugin:2.5.2:install-file -Dfile=log4j-weblayout-0.0.1-SNAPSHOT.jar -DpomFile=pom.xml 
+1

Не думаю, что это необходимо. В документации указано: «Если JAR был создан Apache Maven, он будет содержать pom.xml в подпапке каталога META-INF, который будет считаться по умолчанию». –

+0

Я не вижу этого в документации для цель установочного файла: http://maven.apache.org/plugins/maven-install-plugin/install-file-mojo.html. Есть несколько опций, которые указывают, что groupId, artifactId и версия могут быть извлечены из включенного pom.xml, но я не вижу предложение, которое вы скопировали здесь. –

+1

Это предложение копируется из [link] (http://maven.apache.org/plugins/maven-install-plugin/examples/custom-pom-installation.html), предоставленного в вопросе. –

1

Это, как представляется, already fixed bug (в январе 2015 г.), хотя исправление в последней версии (версия 2.5.2 выпущена в 2014-08-27 согласно plugins official site)

+0

Теоретически эта ошибка была исправлена ​​и исправление выпущено в 3.0.0, но я все еще вижу ту же проблему год спустя в 3.3.3. –

+0

Я вижу ту же ошибку в 3.5.2. –