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

wilx

我正在尝试使用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"
    );
  }
}

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

wilx

我已经弄清楚了:

public static final String userHome = System.getProperty( "user.home" );
public static final File userMavenConfigurationHome = new File( userHome, ".m2" );
public static final String envM2Home = System.getenv("M2_HOME");
public static final File DEFAULT_USER_SETTINGS_FILE = new File( userMavenConfigurationHome, "settings.xml" );
public static final File DEFAULT_GLOBAL_SETTINGS_FILE =
    new File( System.getProperty( "maven.home", envM2Home != null ? envM2Home : "" ), "conf/settings.xml" );

//...

    SettingsBuildingRequest settingsBuildingRequest = new DefaultSettingsBuildingRequest();
    settingsBuildingRequest.setSystemProperties(System.getProperties());
    settingsBuildingRequest.setUserSettingsFile(DEFAULT_USER_SETTINGS_FILE);
    settingsBuildingRequest.setGlobalSettingsFile(DEFAULT_GLOBAL_SETTINGS_FILE);

    SettingsBuildingResult settingsBuildingResult;
    DefaultSettingsBuilderFactory mvnSettingBuilderFactory = new DefaultSettingsBuilderFactory();
    DefaultSettingsBuilder settingsBuilder =  mvnSettingBuilderFactory.newInstance();
    settingsBuildingResult = settingsBuilder.build(settingsBuildingRequest);

    Settings effectiveSettings = settingsBuildingResult.getEffectiveSettings();
    Map<String, Profile> profilesMap = effectiveSettings.getProfilesAsMap();
    Collection<RemoteRepository> remotes = new ArrayList<>(20);
    for (String profileName : effectiveSettings.getActiveProfiles())
    {
        Profile profile = profilesMap.get(profileName);
        List<Repository> repositories = profile.getRepositories();
        for (Repository repo : repositories)
        {
            RemoteRepository remoteRepo
                = new RemoteRepository(repo.getId(), "default", repo.getUrl());
            remotes.add(remoteRepo);
        }
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Maven依赖插件:Aether RepositorySystem的NoSuchElementException

来自分类Dev

如何告诉Maven在项目基础上使用特定的settings.xml?

来自分类Dev

Spring工具套件中的maven在哪里使用settings.xml?

来自分类Dev

Maven:如何通过设置使用settings.xml中的属性。字首?

来自分类Dev

如何在Java中使用Aether搜索RemoteRepositories?

来自分类Dev

Maven远程settings.xml文件

来自分类Dev

Maven:settings.xml中的存储库

来自分类Dev

修改Maven的settings.xml代理设置

来自分类Dev

使用@ContextConfiguration(“ / applicationContext.xml”)和Maven结构“无法加载ApplicationContext”

来自分类Dev

Python xml.ElementTree - 在变量中返回解析后的 xml 以供稍后使用的函数

来自分类Dev

VB6-加载/存储图像以供以后使用

来自分类Dev

VB6-加载/存储图像以供以后使用

来自分类Dev

加载或导入地图以供 matlab 中的类实例使用

来自分类Dev

需要帮助使用jquery搜索XML文件并将结果存储在变量中以供以后使用

来自分类Dev

使用Maven动态类编译和加载

来自分类Dev

无法使用Maven安装Ubik加载包

来自分类Dev

使用Maven动态类编译和加载

来自分类Dev

本地Maven存储库中的Settings.xml

来自分类Dev

Maven-从pom中的settings.xml中读取凭据

来自分类Dev

将Maven凭证存储在settings.xml之外

来自分类Dev

如何判断Eclipse是否选择了我的Maven settings.xml

来自分类Dev

Maven将在settings.xml中选择哪个存储库

来自分类Dev

在Jenkins的Ant构建中查找Maven settings.xml

来自分类Dev

settings.xml中的Maven命令行Args

来自分类Dev

在Jenkins的Ant构建中查找Maven settings.xml

来自分类Dev

Maven将在settings.xml中选择哪个存储库

来自分类Dev

我如何查看我的文档settings.xml(Maven)

来自分类Dev

如何以编程方式获取maven settings.xml 的路径

来自分类Dev

如何在 Maven 插件之外加载 org.apache.maven.settings.Settings?

Related 相关文章

  1. 1

    Maven依赖插件:Aether RepositorySystem的NoSuchElementException

  2. 2

    如何告诉Maven在项目基础上使用特定的settings.xml?

  3. 3

    Spring工具套件中的maven在哪里使用settings.xml?

  4. 4

    Maven:如何通过设置使用settings.xml中的属性。字首?

  5. 5

    如何在Java中使用Aether搜索RemoteRepositories?

  6. 6

    Maven远程settings.xml文件

  7. 7

    Maven:settings.xml中的存储库

  8. 8

    修改Maven的settings.xml代理设置

  9. 9

    使用@ContextConfiguration(“ / applicationContext.xml”)和Maven结构“无法加载ApplicationContext”

  10. 10

    Python xml.ElementTree - 在变量中返回解析后的 xml 以供稍后使用的函数

  11. 11

    VB6-加载/存储图像以供以后使用

  12. 12

    VB6-加载/存储图像以供以后使用

  13. 13

    加载或导入地图以供 matlab 中的类实例使用

  14. 14

    需要帮助使用jquery搜索XML文件并将结果存储在变量中以供以后使用

  15. 15

    使用Maven动态类编译和加载

  16. 16

    无法使用Maven安装Ubik加载包

  17. 17

    使用Maven动态类编译和加载

  18. 18

    本地Maven存储库中的Settings.xml

  19. 19

    Maven-从pom中的settings.xml中读取凭据

  20. 20

    将Maven凭证存储在settings.xml之外

  21. 21

    如何判断Eclipse是否选择了我的Maven settings.xml

  22. 22

    Maven将在settings.xml中选择哪个存储库

  23. 23

    在Jenkins的Ant构建中查找Maven settings.xml

  24. 24

    settings.xml中的Maven命令行Args

  25. 25

    在Jenkins的Ant构建中查找Maven settings.xml

  26. 26

    Maven将在settings.xml中选择哪个存储库

  27. 27

    我如何查看我的文档settings.xml(Maven)

  28. 28

    如何以编程方式获取maven settings.xml 的路径

  29. 29

    如何在 Maven 插件之外加载 org.apache.maven.settings.Settings?

热门标签

归档