Правило принудительного применения Maven: Как получить свойства артефакта Maven?

Я пытаюсь написать пользовательское правило для плагина Maven Enforcer, которое очень похоже на RequireSameVersions правило, которое включено в плагин принудительного применения.

Я хочу посмотреть на все зависимости проекта, и если у них есть собственный набор свойств, то мы должны убедиться, что это свойство одинаково для всех зависимостей (при этом игнорируя любые зависимости без этого набора свойств, так как они не зависят от версии).

Проблема, с которой я сталкиваюсь, заключается в том, что в коде RequireSameVersions Как правило, у артефактов есть версия, представленная в API, так что вы можете вызвать artifact.getVersion() для каждого зависимого артефакта, однако, единственный Объект, который, кажется, вы можете вызвать getProperties() Это сам проект Maven.

Таким образом, код, который я действительно хотел бы написать для пользовательского правила:

    public void execute(EnforcerRuleHelper helper) throws EnforcerRuleException {

        Set<String> versions = new HashSet<String>();

        MavenProject project = null;
        try {
            project = (MavenProject) helper.evaluate("${project}");
            Set<Artifact> dependentArtifacts = project.getDependencyArtifacts();
            for (Artifact artifact : dependentArtifacts) {
                Properties childProperties = getProperties(artifact); //TODO: what to put in this method
                String versionNumber = childProperties.getProperty("bespoke.version");
                if (versionNumber != null) {
                    versions.add(versionNumber);
                }
            }
        } catch (ExpressionEvaluationException eee) {
            throw new EnforcerRuleException(
                    "Unable to retrieve the MavenProject: ", eee);
        }

        if (versions.size() > 1) {
            // we have more than one version type across child projects, so we
            // fail the build.
            throw new EnforcerRuleException(
                    "modules of this project refer to more than one version");
        }
    }    

Тем не менее, я не знаю, что положить в getProperties(artifact) метод. Любые предложения здесь будут фантастическими, спасибо.

0 ответов

Другие вопросы по тегам