6

我已经阅读了很多关于这个和大量其他网站的问题和文章,但我仍然无法让它工作。

我已经配置了 maven 来执行我的构建,现在想将工件放入存储库中。我在tomcat中安装了artifactory,它似乎正在工作。

如果我执行“mvn clean install”,则消息表明工件正在上传到本地 maven 存储库而不是工件:

[INFO] --- maven-install-plugin:2.3.1:install (default-install) @ my-app ---
[INFO] Installing C:\maven_projects\my-app\my-app\target\my-app-1.0-SNAPSHOT.jar to             C:\Users\Administrator\.m2\repository\com\mycompany\app\my-app\1.0
-SNAPSHOT\my-app-1.0-SNAPSHOT.jar
[INFO] Installing C:\maven_projects\my-app\my-app\pom.xml to     C:\Users\Administrator\.m2\repository\com\mycompany\app\my-app\1.0-SNAPSHOT\my-app-1.0-SNAPSHOT.pom

如果我执行“mvn deploy:deploy-file”,指定存储库,则消息表明工件正在上传到工件中,但它们不存在:

mvn deploy:deploy-file -DrepositoryId=libs-release-local -Durl=http://localhost:8080/artifactory/libs-release-local -D
groupId=com.mycompany.app -DartifactId=my-app -Dversion=1.0-SNAPSHOT -Dpackaging=jar -Dfile=target/my-app-1.0-SNAPSHOT.jar

[...]

[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building my-app 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-deploy-plugin:2.7:deploy-file (default-cli) @ my-app ---
Downloading: http://localhost:8080/artifactory/libs-release-local/com/mycompany/app/my-app/1.0-SNAPSHOT/maven-metadata.xml
Uploading: http://localhost:8080/artifactory/libs-release-local/com/mycompany/app/my-app/1.0-SNAPSHOT/my-app-1.0-20130202.014428-1.jar
Uploading: http://localhost:8080/artifactory/libs-release-local/com/mycompany/app/my-app/1.0-SNAPSHOT/my-app-1.0-20130202.014428-1.pom

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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mycompany.app</groupId>
  <artifactId>my-app</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>my-app</name>
  <url>http://maven.apache.org</url>
  <repositories>
                      <repository>
                              <id>central</id>
                      <url>http://localhost:8080/artifactory/libs-release</url>
                      <snapshots>
                              <enabled>false</enabled>
                      </snapshots>
              </repository>
              <repository>
                      <id>snapshots</id>
                      <url>http://localhost:8080/artifactory/libs-snapshot</url>
                      <releases>
                              <enabled>false</enabled>
                      </releases>
              </repository>
      </repositories>
      <pluginRepositories>
              <pluginRepository>
                      <id>central</id>
                      <url>http://localhost:8080/artifactory/plugins-release</url>
                      <snapshots>
                              <enabled>false</enabled>
                      </snapshots>
              </pluginRepository>
              <pluginRepository>
                      <id>snapshots</id>
                      <url>http://localhost:8080/artifactory/plugins-snapshot</url>
                      <releases>
                              <enabled>false</enabled>
                      </releases>
              </pluginRepository>
      </pluginRepositories>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <distributionManagement>
<repository>
        <id>sademo</id>
        <name>sademo-releases</name>
        <url>http://localhost:8080/artifactory/ext-release-local</url>
    </repository>
    <snapshotRepository>
        <id>sademo</id>
        <name>sademo-snapshots</name>
        <url>http://localhost:8080/artifactory/ext-snapshot-local</url>
    </snapshotRepository>
</distributionManagement>
</project>

settings.xml 文件是:

<?xml version="1.0" encoding="UTF-8"?>
<settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0         http://maven.apache.org/xsd/settings-1.0.0.xsd" xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <servers>
    <server>
      <username>admin</username>
      <password>password</password>
      <id>sademo</id>
</server>
    <server>
      <username>admin</username>
      <password>password</password>
      <id>sademo-releases</id>
    </server>
  </servers>
  <mirrors>
    <mirror>
      <mirrorOf>*</mirrorOf>
      <name>remote-repos</name>
      <url>http://localhost:8080/artifactory/remote-repos</url>
      <id>remote-repos</id>
    </mirror>
  </mirrors>
  <profiles>
    <profile>
      <repositories>
        <repository>
          <snapshots>
            <enabled>false</enabled>
          </snapshots>
          <id>sademo</id>
          <name>libs-release</name>
          <url>http://localhost:8080/artifactory/libs-release</url>
        </repository>
        <repository>
          <snapshots />
          <id>sademo-snapshots</id>
          <name>libs-snapshot</name>
          <url>http://localhost:8080/artifactory/libs-snapshot</url>
        </repository>
      </repositories>
      <pluginRepositories>
        <pluginRepository>
          <snapshots>
            <enabled>false</enabled>
          </snapshots>
          <id>central</id>
          <name>plugins-release</name>
          <url>http://localhost:8080/artifactory/plugins-release</url>
        </pluginRepository>
        <pluginRepository>
          <snapshots />
          <id>snapshots</id>
          <name>plugins-snapshot</name>
          <url>http://localhost:8080/artifactory/plugins-snapshot</url>
        </pluginRepository>
      </pluginRepositories>
      <id>artifactory</id>
    </profile>
  </profiles>
  <activeProfiles>
    <activeProfile>artifactory</activeProfile>
  </activeProfiles>
</settings>

关于如何获得“mvn clean install”以将 jar 上传到 artifcatory 的任何想法?

4

1 回答 1

11

在行家

mvn install

旨在将工件安装到本地存储库中,而不是安装到远程存储库中。要将工件上传到远程存储库,您需要说:

mvn deploy

mvn deploy 将使用来自 distributionManagement 的条目将工件上传到给定的存储库。

在您的示例中,pom 不应包含存储库的任何配置,因为您已经在 settings.xml 文件中完成了它。

除此之外,您的配置看起来不是 100% 正确,导致消息:

Uploading: http://localhost:8080/artifactory/libs-release-local/com/mycompany/app/my-app/1.0-SNAPSHOT/my-app-1.0-20130202.014428-1.jar
Uploading: http://localhost:8080/artifactory/libs-release-local/com/mycompany/app/my-app/1.0-SNAPSHOT/my-app-1.0-20130202.014428-1.pom

显示工件被放入的位置。在这种情况下,libs-release-local 但工件是快照而不是发布。

我会说要更改以下内容:

<repository>
  <snapshots />
  <id>sademo-snapshots</id>
  <name>libs-snapshot</name>
  <url>http://localhost:8080/artifactory/libs-snapshot</url>
</repository>

进入:

<repository>
  <snapshots>
    <enabled>true</enabled>
  </snapshots>
  <id>sademo-snapshots</id>
  <name>libs-snapshot</name>
  <url>http://localhost:8080/artifactory/libs-snapshot</url>
</repository>
于 2013-02-02T08:27:13.067 回答