简体   繁体   中英

Can Maven install POM when building and artifact with classifier?

I have a Maven project, which uses JAR packaging. When I run the install phase, it will install both Project-1.0.jar and Project-1.0.pom files in my local repository.

Now I would like the JAR to be built with a classifier. This is easy enough: I just add the line to my jar plugin configuration:

  <plugin>
    <artifactId>maven-jar-plugin</artifactId>
    <configuration>
      <classifier>whatever</classifier>   
      [...]
    </configuration>
  </plugin>

Now, this works in that it installs Project-1.0-whatever.jar in my repo, but no longer installs a POM.

In case it matters, I want to use this feature in conjunction with profiles, ie I want to build JARs with different classifiers with different profiles.

The reason I want the POM is because I have other projects depending on this one. When I build one of these, it will try to find a POM for this dependency. If it can't, it will happily use the JAR, but that is not an acceptable solution for me for a couple of reasons:

It's bad enough that it will try to contact external repos and look for it, but even worse, we use a share repo, so it will download the POM from the shared repo, which may not be what I want - for example if I just made changes to the POM and am trying to test them.

Is there a solution, or can anyone suggest a reasonable workaround?

EDIT: I just discovered that the issue affects Maven 2.2.1, but not Maven 3.0.5. This may therefore be a bug or a difference in features between versions. I would still be interested in solutions/workarounds for Maven 2, as migrating the project to Maven 3 is a complicated affair and not likely to happen.

The reason turned out to be nothing to do with Maven version as such, and everything to do with the version of maven-install-plugin. It turns out versions prior to 2.3 have this bug.

Old installations of Maven are somewhat likely to suffer this issue, as Maven 2 will use any version of a plugin that it has unless a version has been explicitly specified in the POM, but maven-install-plugin is included by default and it's quite possible for a POM not to explicitly specify it at all (as it was in my case).

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM