不希望Nexus中我自己的工件公开

时间:2016-03-09 06:24:25

标签: maven nexus

在我的Nexus中,我自己的项目位于托管存储库“Snapshots”下。我必须将此存储库分配给“公共存储库”;否则,我无法使用mvn编译自己的项目。这将是错误消息:

[ERROR] Failed to execute goal on project bword: Could not resolve dependencies for project com.bbword.core:bword:war:0.0.1-SNAPSHOT: Could not find artifact com.bbword.core:tts-app:jar:0.0.1-SNAPSHOT in nexus (http://www.bbword.com:8081/nexus/content/groups/public) -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.

当然,我不希望自己的项目在互联网上的公共存储库下。哪种配置可能是我错的?

这是我的settings.xml:

<?xml version="1.0"?>
<settings>
  <mirrors>
    <mirror>
      <id>nexus</id>
      <mirrorOf>*</mirrorOf>
      <url>http://www.bbword.com:8081/nexus/content/groups/public</url>
    </mirror>
  </mirrors>
  <servers>
    <server>
      <id>nexus</id>
      <username>admin</username>
      <password>bbword</password>
    </server>
  </servers>
  <profiles>
    <profile>
      <id>nexus</id>
      <!--Enable snapshots for the built in central repo to direct -->
      <!--all requests to nexus via the mirror -->
      <repositories>
        <repository>
          <id>central</id>
          <url>http://central</url>
          <releases><enabled>true</enabled></releases>
          <snapshots><enabled>true</enabled></snapshots>
        </repository>
      </repositories>
      <pluginRepositories>
        <pluginRepository>
          <id>central</id>
          <url>http://central</url>
          <releases><enabled>true</enabled></releases>
          <snapshots><enabled>true</enabled></snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>
  </profiles>
  <activeProfiles>
    <!--make the profile active all the time -->
    <activeProfile>nexus</activeProfile>
  </activeProfiles>
</settings>

编辑:附上图片以便更好地说明。
enter image description here

我的项目位于“快照”下。

编辑:新附件详情。

enter image description here

2 个答案:

答案 0 :(得分:0)

您可以通过不同的方式控制可从互联网公开访问的内容

  • 你可以告诉nexus存储库是私有的,但是maven将无法使用它
  • 你可以告诉nexus存储库是公开的,并隐藏你自己的互联网连接。

当您配置自己的本地连接时,nexus在其自己的服务器上显示的内容是什么。这并不意味着它会自动上传到maven中心或任何其他公共nexus服务器。

但如果它是你自己的关系,你没有理由让服务器本身可以从互联网上访问,防火墙(或你的ISP路由器)应该只是不允许外部呼叫在这里结束。这对于您自己的项目来说就足够了,不要在互联网上的公共存储库中

答案 1 :(得分:0)

至少有两种方法可以做到这一点。两者都需要一些管理员访问权限。

应用方式:您创建一个新的托管存储库并使用凭据保护它这里有一篇文章描述如何:(http://minibiti.blogspot.ca/2012/03/private-repositories-in-sonatype-nexus.html) 您甚至可以禁用该存储库的UI。

网络方式: 您需要访问您的nexus,但将其与互联网隔离。当然,如果您这样做,请不要代理中央存储库,也不要将其用作镜像。

第一个解决方案的帖子也建议您将密码以纯文本形式提供。我不喜欢这样。看看这篇文章的maven加密https://maven.apache.org/guides/mini/guide-encryption.html

编辑: 这里有如何将凭证添加到settings.xml

<android.support.design.widget.CoordinatorLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:context=".MainActivity">

    <include layout="@layout/content_main"/>

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/AppTheme.AppBarOverlay">

       <android.support.v7.widget.Toolbar
           android:id="@+id/toolbar"
           android:layout_width="match_parent"
           android:layout_height="?attr/actionBarSize"
           android:background="?attr/colorPrimary"
           app:popupTheme="@style/AppTheme.PopupOverlay" />

    </android.support.design.widget.AppBarLayout>

</android.support.design.widget.CoordinatorLayout>