【发布时间】:2016-09-16 16:40:31
【问题描述】:
我的要求
我有一个 Java 实用程序库。我想做2个jar文件。一个用于 Android,另一个用于 Java。
对于 Android jar,我想排除 JDBC 包。
我想将 jar 文件和他们的 javadoc、javasources 上传到 Maven 远程存储库。
所以我可以使用下面的库
<dependency>
<groupId>com.mycompany</groupId>
<artifactId>mylib</artifactId>
<version>1.0</version>
</dependency>
或 Android 分类器
<dependency>
<groupId>com.mycompany</groupId>
<artifactId>mylib</artifactId>
<version>1.0</version>
<classifier>android</classifier>
</dependency>
这是我的 POM.xml
<project>
<!-- .... -->
<groupId>com.mycompany</groupId>
<artifactId>mylib</artifactId>
<version>1.0</version>
<name>mylib</name>
<packaging>jar</packaging>
<!-- .... -->
<build>
<plugins>
<!-- compiler -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<!-- .... -->
</plugin>
<!-- jar -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<!-- .... -->
</plugin>
<!-- source -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<!-- .... -->
</plugin>
<!-- javadoc -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<!-- .... -->
</plugin>
<!-- nexus-staging-maven -->
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<!-- .... -->
</plugin>
<!-- maven-gpg -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<!-- .... -->
</plugin>
</plugins>
</build>
<profiles>
<!-- All files - Java -->
<profile>
<id>java</id>
<activation>
<property>
<name>!android</name>
</property>
</activation>
</profile>
<!-- Android - Excluding JDBC, JPA packages -->
<profile>
<id>android</id>
<activation>
<property>
<name>android</name>
</property>
</activation>
<build>
<plugins>
<!-- Exclude some packages -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<excludes>
<exclude>**/jdbc/**</exclude>
</excludes>
</configuration>
</plugin>
<!-- Exclude some packages -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<classifier>android</classifier>
<excludes>
<exclude>**/jdbc/**</exclude>
</excludes>
</configuration>
</plugin>
<!-- Exclude some packages -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<configuration>
<excludes>
<exclude>**/jdbc/**</exclude>
</excludes>
</configuration>
</plugin>
<!-- Exclude some packages -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<sourcepath>${project.basedir}/src/main/java</sourcepath>
<sourceFileExcludes>
<sourceFileExclude>**/jdbc/**</sourceFileExclude>
</sourceFileExcludes>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
<dependencies>
<!-- .... -->
</dependencies>
</project>
Maven CLI
-
运行 mvn clean deploy 以部署 Java 配置文件
成功。 Maven 将以下文件部署到远程存储库中:
- mylib-1.0.jar
- mylib-1.0.pom
- mylib-1.0-javadoc.jar
- mylib-1.0-sources.jar
- 还有他们所有的签名文件
-
运行 mvn clean deploy -Dandroid 以部署 Android 配置文件
生成以下文件:
- mylib-1.0-android.jar // 附加分类器
- mylib-1.0.pom
- mylib-1.0-javadoc.jar
- mylib-1.0-sources.jar
- 还有他们所有的签名文件
我出错了
[ERROR] Repository "mycompany-1082" failures
[ERROR] Rule "sources-staging" failures
[ERROR] * Missing: no main jar artifact found in folder '/com/mycompany/mylib/1.0'
[ERROR] Rule "javadoc-staging" failures
[ERROR] * Missing: no main jar artifact found in folder '/com/mycompany/mylib/1.0'
问题:为什么会出现这个错误?
【问题讨论】:
标签: java maven-3 pom.xml maven-profiles