标签: aether

如何在Grails 2.4中外化Maven凭据

我正在尝试从使用Ivy迁移到在Grails 2.4项目中使用Aether解析器.

我遇到的问题与外部化凭据有关.与此相关的信息可以在Grails手册中找到:http://grails.org/doc/latest/guide/conf.html#dependencyRepositories

似乎没有一种记录方式可以像使用常春藤一样以外部方式使用Maven.

有了常春藤,我可以把这样的东西放到我的.grails/settings.groovy文件中:

grails.project.ivy.authentication = {
    credentials {
        realm = "My Repo"
        host = "repo.mycustomrepo.com"
        username = "user"
        password = "password"
    }
}
Run Code Online (Sandbox Code Playgroud)

要使用Aether,我不得不将凭证块直接放在我的BuildConfig.groovy喜欢中:

repositories {
    inherits true // Whether to inherit repository definitions from plugins

    grailsPlugins()
    grailsHome()
    mavenLocal()
    grailsCentral()
    mavenCentral()
    mavenRepo("http://repo.mycustomrepo.com") {
      //Add authentication details to repository connection
      auth([
        username: 'user',
        password: 'password'
      ])
    }
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,这对我来说确实存在问题,因为在我的组织中我们使用Artifactory配置为使用我们的LDAP凭据.这是一个问题,因为我不想在源代码管理中提交我的凭据.

有没有未记录的解决方案,或者Grails不支持它吗?

grails maven grails-2.0 aether

7
推荐指数
1
解决办法
1816
查看次数

使用Maven Resolver Provider以编程方式获取有效的POM

我要怎么办

  • 给定本地文件系统上的POM文件。
  • 我想以编程方式获取该POM文件的有效POM。具体来说,我想执行以下操作:

    • 解决POM依赖关系
    • 确保已处理所有父POM
    • 获取完全解决的POM的依赖项列表
    • 等等...
  • 我不需要获得传递依赖。

什么有效?

我正在使用Maven Resolver Provider进行哪些工作。但是我必须使用包私有类org.apache.maven.repository.internal.DefaultModelResolver

这里是可以运行的示例Maven项目的GitHub链接:https : //github.com/sahilm/maven-resolver-test

该示例程序执行以下操作:

  • 从Maven Central下载最新的Spring Boot POM。
  • 打印出它的直接依赖项(包括父代)

您可以使用以下程序运行该程序: mvn exec:java -Dexec.mainClass="com.sahilm.maven_resolver_test.Test"

我需要什么帮助?

  • 我需要帮助来理解为什么我必须使用包私有类才能使工作正常进行。
  • 有没有其他方法可以获取我需要的信息?

java maven aether

7
推荐指数
1
解决办法
264
查看次数

如何在Maven 3插件中获取依赖树?

在Maven 2 mojo中,您可以使用类似的东西来获取依赖树:

DependencyNode rootNode;
try {
  rootNode = treeBuilder.buildDependencyTree(project, localRepository,
      artifactFactory, artifactMetadataSource, null, artifactCollector);
} catch (DependencyTreeBuilderException e) {
  throw new MojoExecutionException("Failed to create dependency tree.", e);
}
final CollectingDependencyNodeVisitor visitor = new CollectingDependencyNodeVisitor();
rootNode.accept(visitor);
final List<DependencyNode> nodes = visitor.getNodes();
Run Code Online (Sandbox Code Playgroud)

什么是Maven 3等价物?在此期间ArtifactCollector,许多相关课程已被弃用(ArtifactMetadataSource等等).

java maven-3 maven aether

6
推荐指数
1
解决办法
2211
查看次数

如何以编程方式使用maven下载jar

我正在编写一个应用程序,要求我下载一个给定mavens groupid/artifactid/version的jar.

我目前开始

public Model pomToModel(String pomUrl) throws Exception {
URL url = new URL(pomUrl);
    InputStream stream = url.openStream();
    try {
        Model model = new MavenXpp3Reader().read(stream);
        return model;
    } finally {
        stream.close();
    }
}
Run Code Online (Sandbox Code Playgroud)

所以给定POM的url,我现在有maven Model对象来表示它.这似乎运作良好.

我想知道的是两件事:

  1. 找到模型在maven插件将使用的maven存储库中表示的jar工件的url
  2. 给定模型,在本地存储库中找到表示jar的文件

我已经有质量差的解决方案:我去mvnrepository.com手动编码url,我使用〜/ .m2/repository作为文件的前缀.我显然可以改进这个解决方案,但是我最终会很难复制经过充分测试并在maven代码库中使用的代码.

我真的很想知道如何使用maven类来做到这一点.

我已经做了相当多的谷歌搜索,但搜索maven和jar(甚至在stackoverflow)上的任何有趣的事情是我找到了很多关于如何使用maven的解决方案,而不是如何使用maven类进行编码.

谢谢您的帮助

java maven aether

6
推荐指数
2
解决办法
3869
查看次数

如何以编程方式列出所有传递依赖项,包括使用DependencyGraphBuilder在Maven中重写的依赖项?

这与其他问题类似(如此),但我希望能够使用最新的API执行此操作.maven-dependency-plugin:tree verbose选项已被弃用,并且在最新的(2.5.1)代码中没有做任何事情,所以没有很好的例子说明如何做到这一点.

maven-3 maven aether

5
推荐指数
1
解决办法
2488
查看次数

如何找到任何给定项目的 Maven 依赖项?

我正在尝试构建一个单独的项目,该项目可以找到任何给定项目的 Maven 依赖项。我指的是 Aether 示例,但我找不到定义另一个项目以查找依赖项的方法。

如下图1所示,项目 1 具有项目 2 的依赖项,项目 2 具有项目 3 的依赖项。如果我在依赖项查找器上选择项目 1,它应该显示项目 1 的所有依赖项,即项目 2。

在此处输入图片说明

我指的是以下 Aether 代码片段,但我无法找到设置另一个项目的方法(通过设置 pom 文件或项目目录)

    RepositorySystem system = Booter.newRepositorySystem();

    RepositorySystemSession session = Booter.newRepositorySystemSession( system );

    Artifact artifact = new DefaultArtifact( "org.eclipse.aether:aether-impl:1.0.0.v20140518" );

    ArtifactDescriptorRequest descriptorRequest = new ArtifactDescriptorRequest();
    descriptorRequest.setArtifact( artifact );
    descriptorRequest.setRepositories( Booter.newRepositories( system, session ) );

    ArtifactDescriptorResult descriptorResult = system.readArtifactDescriptor( session, descriptorRequest );

    for ( Dependency dependency : descriptorResult.getDependencies() )
    {
        System.out.println( dependency );
    }
Run Code Online (Sandbox Code Playgroud)

java maven aether

5
推荐指数
1
解决办法
6378
查看次数

使用Maven3.1时,不会注入RepositorySystemSession和RepositorySystem并保持为null

我的问题是有很大关系这一个

但我无法让它发挥作用.希望更多的关注它会有所帮助

我的环境

Apache Maven 3.1.1 (0728685237757ffbf44136acec0402957f723d9a; 2013-09-17 08:22:22-0700)
Maven home: /usr/local/maven
Java version: 1.8.0_40, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "10.11.3", arch: "x86_64", family: "mac"
Run Code Online (Sandbox Code Playgroud)

我正在使用maven 3.1所以我使用的是新的eclipse.aether,而不是sonatype.aether.

我的插件

package aether.example;

import java.util.List;

import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.plugins.annotations.Mojo;
import org.eclipse.aether.RepositorySystem;
import org.eclipse.aether.RepositorySystemSession;
import org.eclipse.aether.repository.RemoteRepository;

@Mojo(name="test")
public class TestMojo extends AbstractMojo {


  /**
   * The entry point to Aether, i.e. the component doing all the …
Run Code Online (Sandbox Code Playgroud)

java maven-3 aether

5
推荐指数
1
解决办法
1306
查看次数

Maven:以编程方式获取所有依赖项

如何以编程方式获取Maven模块在Maven执行环境之外的所有依赖项?

到目前为止,我有:

通过maven-core:

Path pomPath = ...;
MavenXpp3Reader reader = new MavenXpp3Reader();
try (InputStream is = Files.newInputStream(pomPath)) {
    Model model = reader.read(is);
    this.mavenProject = new MavenProject(model);
}
Run Code Online (Sandbox Code Playgroud)

并通过jcabi-aether:

File localRepo = Paths.get(System.getProperty("user.home"), ".m2").toFile();
new Classpath(mavenProject, localRepo, "runtime")
Run Code Online (Sandbox Code Playgroud)

到目前为止这一般是正确的吗?

现在的问题是我得到一个NullPointerException:

Caused by: java.lang.NullPointerException
    at com.jcabi.aether.Aether.mrepos(Aether.java:197)
    at com.jcabi.aether.Aether.<init>(Aether.java:140)
    at com.jcabi.aether.Classpath.<init>(Classpath.java:125)
Run Code Online (Sandbox Code Playgroud)

因为mavenProject.getRemoteProjectRepositories()返回null.

如何初始化MavenProject以包含已配置的远程repos,同时考虑settings.xml文件(镜像,代理,存储库等)?

java maven aether

5
推荐指数
1
解决办法
4752
查看次数

用于从没有mvn/poms的maven repo下载工件的实用程序

是否有一个不是mvn的maven客户端(maven发行版中包含的二进制文件)我可以用来从maven存储库中下载一个工件而不使用pom?我想使用Maven仓库为回购协议为我们的运营团队拿起构建(构建的包括快照),但我不想让他们不得不写作劲歌勾搭并在他们的声明依赖性.理想情况下,我正在寻找一个cli客户端,我可以通过repo url传递并协调和下载给定的工件.这样的事情是存在还是我最好为此写一个一次性的脚本?

java maven-2 repository aether

4
推荐指数
1
解决办法
1万
查看次数

您如何使用以太币从Java中找到Maven工件的最新版本?

他们的文档确实很小,我无法弄清楚。

我在这里找到了部分答案,但是它没有全部代码。

您如何使用以太币从Java中找到Maven工件的最新版本?

java maven aether

4
推荐指数
1
解决办法
1561
查看次数

加载 Maven 的 settings.xml 以供 Jcabi-Aether 使用

我正在尝试使用 Maven 和 Jcabi-Aether 获取/解决一些工件。我想我已经准备好了大部分代码,但是我很难弄清楚如何加载用户,settings.xml以便我可以将 Maven 存储库加载到remotes变量中以供 Aether 使用:

import com.jcabi.aether.Aether;
import java.io.File;
import java.util.Arrays;
import org.apache.maven.project.MavenProject;
import org.sonatype.aether.artifact.Artifact;
import org.sonatype.aether.repository.RemoteRepository;
import org.sonatype.aether.util.artifact.DefaultArtifact;

public class Main {
  public static void main(String[] args) {
    File local = new File("/tmp/local-repository");
    Collection<RemoteRepository> remotes = Arrays.asList(
      new RemoteRepository(
        "maven-central",
        "default",
        "http://repo1.maven.org/maven2/"
      )
    );
    Collection<Artifact> deps = new Aether(remotes, local).resolve(
      new DefaultArtifact("junit", "junit-dep", "", "jar", "4.10"),
      "runtime"
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

是否可以加载settings.xml和获取存储库信息?

java maven aether jcabi

3
推荐指数
1
解决办法
802
查看次数

标签 统计

aether ×11

java ×9

maven ×9

maven-3 ×3

grails ×1

grails-2.0 ×1

jcabi ×1

maven-2 ×1

repository ×1