项目的外部库中pom文件com.google.auto.value:auto-value:1.1的依赖性与mvnrepository中的同一pom文件不同。 Structure of jar
在META-INF中,auto-value:1.1的pom比mvn存储库中的pom具有更多的依赖项。在评论了额外的依赖项之后,我还尝试从github构建项目,但是失败了。我还检查了父pom,但是在那里没有找到缺少的依赖项
META-INF中的pom是:
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.google.auto</groupId>
<artifactId>auto-parent</artifactId>
<version>3</version>
</parent>
<groupId>com.google.auto.value</groupId>
<artifactId>auto-value</artifactId>
<version>1.1</version>
<name>AutoValue</name>
<description>
Immutable value-type code generation for Java 1.6+.
</description>
<scm>
<url>http://github.com/google/auto</url>
<connection>scm:git:git://github.com/google/auto.git</connection>
<developerConnection>scm:git:ssh://git@github.com/google/auto.git</developerConnection>
<tag>HEAD</tag>
</scm>
<dependencies>
<dependency>
<groupId>com.google.auto</groupId>
<artifactId>auto-common</artifactId>
<version>0.4</version>
</dependency>
<dependency>
<groupId>com.google.auto.service</groupId>
<artifactId>auto-service</artifactId>
<version>1.0-rc2</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>18.0</version>
</dependency>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm</artifactId>
<version>4.1</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity</artifactId>
<version>1.7</version>
</dependency>
<!-- test dependencies -->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava-testlib</artifactId>
<version>17.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.google.testing.compile</groupId>
<artifactId>compile-testing</artifactId>
<version>0.6</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.google.truth</groupId>
<artifactId>truth</artifactId>
<version>0.25</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>src/main/java</directory>
</resource>
</resources>
<plugins>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>2.5</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-invoker-plugin</artifactId>
<configuration>
<addTestClassPath>true</addTestClassPath>
<cloneProjectsTo>${project.build.directory}/it</cloneProjectsTo>
<filterProperties>
<auto.version>${project.version}</auto.version>
</filterProperties>
<pomIncludes>
<pomInclude>*/pom.xml</pomInclude>
</pomIncludes>
<streamLogs>true</streamLogs>
</configuration>
<executions>
<execution>
<id>integration-test</id>
<goals>
<goal>install</goal>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<minimizeJar>true</minimizeJar>
<filters>
<filter>
<artifact>org.apache.velocity:*</artifact>
<includes>
<include>**</include>
</includes>
</filter>
</filters>
<relocations>
<!-- We don't relocate Velocity classes because they often load classes from
strings, and the relocator doesn't know to rewrite those strings.
We also don't minimize it for similar reasons.
You would expect that we could express this by relocating org.apache and
excluding org.apache.velocity.**, but it turns out that doesn't work because
the relocator for some reason feels the need to rewrite string constants that
begin with org/apache even if they also begin with org/apache/velocity, and
that throws resource name constants into the air. -->
<relocation>
<pattern>org.apache.commons</pattern>
<shadedPattern>autovalue.shaded.org.apache.commons</shadedPattern>
</relocation>
<relocation>
<pattern>org.objectweb</pattern>
<shadedPattern>autovalue.shaded.org.objectweb</shadedPattern>
</relocation>
<relocation>
<pattern>com.google</pattern>
<shadedPattern>autovalue.shaded.com.google.common</shadedPattern>
<excludes>
<exclude>com.google.auto.value.**</exclude>
</excludes>
</relocation>
</relocations>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Maven Central的Pom从此URL-> https://search.maven.org/classic/remotecontent?filepath=com/google/auto/value/auto-value/1.1/auto-value-1.1.pom 低于
<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/maven-v4_0_0.xsd">
<parent>
<artifactId>auto-parent</artifactId>
<groupId>com.google.auto</groupId>
<version>3</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.google.auto.value</groupId>
<artifactId>auto-value</artifactId>
<name>AutoValue</name>
<version>1.1</version>
<description>
Immutable value-type code generation for Java 1.6+.
</description>
<scm>
<connection>scm:git:git://github.com/google/auto.git</connection>
<developerConnection>scm:git:ssh://git@github.com/google/auto.git</developerConnection>
<url>http://github.com/google/auto</url>
</scm>
<build>
<resources>
<resource>
<directory>src/main/java</directory>
</resource>
</resources>
<plugins>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>2.5</version>
</plugin>
<plugin>
<artifactId>maven-invoker-plugin</artifactId>
<executions>
<execution>
<id>integration-test</id>
<goals>
<goal>install</goal>
<goal>run</goal>
</goals>
</execution>
</executions>
<configuration>
<addTestClassPath>true</addTestClassPath>
<cloneProjectsTo>${project.build.directory}/it</cloneProjectsTo>
<filterProperties>
<auto.version>${project.version}</auto.version>
</filterProperties>
<pomIncludes>
<pomInclude>*/pom.xml</pomInclude>
</pomIncludes>
<streamLogs>true</streamLogs>
</configuration>
</plugin>
<plugin>
<artifactId>maven-shade-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<minimizeJar>true</minimizeJar>
<filters>
<filter>
<artifact>org.apache.velocity:*</artifact>
<includes>
<include>**</include>
</includes>
</filter>
</filters>
<relocations>
<relocation>
<pattern>org.apache.commons</pattern>
<shadedPattern>autovalue.shaded.org.apache.commons</shadedPattern>
</relocation>
<relocation>
<pattern>org.objectweb</pattern>
<shadedPattern>autovalue.shaded.org.objectweb</shadedPattern>
</relocation>
<relocation>
<pattern>com.google</pattern>
<shadedPattern>autovalue.shaded.com.google.common</shadedPattern>
<excludes>
<exclude>com.google.auto.value.**</exclude>
</excludes>
</relocation>
</relocations>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava-testlib</artifactId>
<version>17.0</version>
<scope>test</scope>
<exclusions>
<exclusion>
<artifactId>jsr305</artifactId>
<groupId>com.google.code.findbugs</groupId>
</exclusion>
<exclusion>
<artifactId>truth</artifactId>
<groupId>org.truth0</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.google.testing.compile</groupId>
<artifactId>compile-testing</artifactId>
<version>0.6</version>
<scope>test</scope>
<exclusions>
<exclusion>
<artifactId>tools</artifactId>
<groupId>com.sun</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
<exclusions>
<exclusion>
<artifactId>hamcrest-core</artifactId>
<groupId>org.hamcrest</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.google.truth</groupId>
<artifactId>truth</artifactId>
<version>0.25</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
为什么Maven Central的pom依赖性比我jar中的pom小?