更新:请参阅 后续问题
我有一个Java库,其构建过程完全用Ant编写。该项目的沙箱(源代码,我在其中编辑代码)是
R:\jeffy\programming\sandbox\xbnjava\
其构建(输出)目录为
R:\jeffy\programming\build\xbnjava-0.1.1\
这是我的目标是:
ant cleanpublish:从头开始构建项目,包括创建这三个jar
ant cleanpublish
mylibrary-0.1.1.jar
mylibrary-0.1.1-sources.jar
mylibrary-0.1.1-javadoc.jar
被放入
R:\jeffy\programming\build\xbnjava-0.1.1\download
这部分已经完成并且运行良好。这三个罐子是Maven Central 所要求的(向上滚动一点即可看到它)。
将版本检入GitHub并将构建目录上载到我的Web服务器。我也已经完成了这一步。
mvn deploy: 唯一 需要做的就是在三个罐子上签名并将它们推到Maven Central。这是我存在的当前祸根。
mvn deploy
这些是我到目前为止所采取的步骤:
settings.xml
<?xml version="1.0" encoding="UTF-8"?>
xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> sonatype-nexus-snapshots MY_SONATYPE_USERNAME MY_SONATYPE_PASSWORD sonatype-nexus-staging MY_SONATYPE_USERNAME MY_SONATYPE_PASSWORD
(此文件存储在中R:\jeffy\programming\sandbox\settings.xml,因为我的每个项目都使用该文件。)
R:\jeffy\programming\sandbox\settings.xml
pom.xml
ez-vcard
我相信这些部分在顶部,我理解:
<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> <groupId>com.github.xbn</groupId> <artifactId>xbnjava</artifactId> <packaging>jar</packaging> <version>0.1.2-SNAPSHOT</version> <name>XBN-Java</name> <url>https://github.com/aliteralmind/xbnjava</url> <inceptionYear>2014</inceptionYear> <organization> <name>Jeff Epstein</name> </organization> <description>XBN-Java is a collection of generically-useful backend (server side, non-GUI) programming utilities, featuring RegexReplacer and FilteredLineIterator. XBN-Java is the foundation of Codelet (http://codelet.aliteralmind.com).</description> <parent> <groupId>org.sonatype.oss</groupId> <artifactId>oss-parent</artifactId> <version>7</version> </parent> <licenses> <license> <name>Lesser General Public License (LGPL) version 3.0</name> <url>https://www.gnu.org/licenses/lgpl-3.0.txt</url> </license> <license> <name>Apache Software License (ASL) version 2.0</name> <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url> </license> </licenses> <developers> <developer> <name>Jeff Epstein</name> <email>aliteralmind-github@yahoo.com</email> <roles> <role>Lead Developer</role> </roles> </developer> </developers> <issueManagement> <system>GitHub Issue Tracker</system> <url>https://github.com/aliteralmind/xbnjava/issues</url> </issueManagement> <scm> <connection>scm:git:git@github.com:aliteralmind/xbnjava.git</connection> <url>scm:git:git@github.com:aliteralmind/xbnjava.git</url> <developerConnection>scm:git:git@github.com:aliteralmind/xbnjava.git</developerConnection> </scm> <properties> <java.version>1.7</java.version> </properties>
其余的,我不太确定:
<profiles> <!-- This profile will sign the JAR file, sources file, and javadocs file using the GPG key on the local machine. See: https://docs.sonatype.org/display/Repository/How+To+Generate+PGP+Signatures+With+Maven --> <profile> <id>release-sign-artifacts</id> <activation> <property> <name>release</name> <value>true</value> </property> </activation> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-gpg-plugin</artifactId> <version>1.4</version> <executions> <execution> <id>sign-artifacts</id> <phase>package</phase> <goals> <goal>sign</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </profile> </profiles> </project>
我需要做什么才能完成POM,其路径是
R:\jeffy\programming\sandbox\xbnjava\pom.xml
因此它签名并推送了这三个jar文件,位于
R:\jeffy\programming\build\xbnjava-0.1.1\download\
到Maven Central?
我真的很感谢从这里出发的一些建议。三天来,我一直只浏览Maven文档,却迷失了自己,感到沮丧。这是我过去几年中对Maven的第三次尝试,每次尝试都非常糟糕。
(我最初尝试通过Ant任务来满足Maven要求,但是我决定完全将我的Ant构建和Maven的“罐子和推送到Maven- Central”部分分开。这是要学习一些新知识,但是也因为似乎在Ant中实现Maven比纯Maven少了一个标准。)
感谢你们对我的帮助。
如果要在Maven之外构建工件,则需要在.pom文件中引用它们。
首先,将packaging项目的设置为,pom以便Maven不会尝试编译任何内容。
packaging
pom
然后使用build-helper-maven-plugin将您的工件文件附加到项目。这是一个例子:
build-helper-maven-plugin
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <version>1.8</version> <executions> <execution> <id>attach-artifacts</id> <phase>package</phase> <goals> <goal>attach-artifact</goal> </goals> <configuration> <artifacts> <artifact> <file>build/xbnjava-0.1.1/download/mylibrary-0.1.1.jar</file> <type>jar</type> </artifact> <artifact> <file>build/xbnjava-0.1.1/download/mylibrary-0.1.1-javadoc.jar</file> <type>jar</type> <classifier>javadoc</classifier> </artifact> <artifact> <file>build/xbnjava-0.1.1/download/mylibrary-0.1.1-sources.jar</file> <type>jar</type> <classifier>sources</classifier> </artifact> </artifacts> </configuration> </execution> </executions> </plugin>
最后,distributionManagement按照此处的指定,将其添加到您的.pom文件中。
distributionManagement
您可以在github上参考我自己的Maven项目设置,该项目的创建是为了在Maven Central上载手动构建的.jar文件。