определить URL-адрес репозитория для файла развертывания maven

Я использую Maven для создания определенного проекта, и в POM я создаю 3 разных варианта основного артефакта с помощью плагина maven shadow (я создаю банки uber с различными комбинациями включенных фреймворков ведения журнала). Плагин Shade создает jar-файлы с альтернативными идентификаторами артефактов и их соответствующими зависимостями-poms.

Теперь моя задача состоит в том, как развернуть эти новые артефакты в моих удаленных репозиториях. Я использую плагин установки maven, чтобы установить их в свое локальное репо, но плагин развертывания maven требует явной настройки URL-адреса репозитория. Я хочу, чтобы плагин принял любое удаленное репо, которое использует развертывание по умолчанию, будь то моментальный снимок или репозиторий выпуска или другой URL-адрес репо, который я передаю через командную строку. Я надеялся найти какое-нибудь свойство maven, например ${project.remoterepo.url}, которое соответствует разрешенному репо. Кажется глупым явно настраивать удаленный URL-адрес, когда цель развертывания уже делает это.

Любые советы приветствуются. Спасибо!


person Richard Sand    schedule 19.03.2017    source источник
comment
Вы когда-нибудь узнавали, как это сделать? Я сталкиваюсь с той же проблемой, и deploy:deploy-file начинает меня бесить.   -  person Thomas Kåsene    schedule 05.10.2017
comment
Нет, и короли-знатоки очень несимпатичны. Вы можете использовать инструменты только по назначению! Измените свой бизнес, чтобы приспособить инструмент, в основном то, что мне сказали   -  person Richard Sand    schedule 05.10.2017


Ответы (1)


Вот что я сделал, чтобы автоматически выбрать либо SNAPSHOT, либо RELEASE репродукцию на основе шаблона версии: (Я знаю, что это своего рода запах кода, но поскольку ASF не желает включать ваш код по какой-либо причине, я мог решите мое требование)

<properties>
    <deploy.repositoryUrl>.. url release repo ..</deploy.repositoryUrl>
    <deploy.repositoryId>.. id release repo ..</deploy.repositoryId>
    <deploy.repositorySnapshotUrl>.. snapshot repo ..</deploy.repositorySnapshotUrl>
    <deploy.repositorySnapshotId>.. id snapshot repo ..</deploy.repositorySnapshotId>       
</properties>

<build>     
    <plugins>   
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <version>3.0.0</version>
            <executions>
                <execution>
                    <!-- sets the isSnapshot property to true if SNAPSHOT was used -->
                    <id>build-helper-regex-is-snapshot-used</id>
                    <phase>validate</phase>
                    <goals>
                        <goal>regex-property</goal>
                    </goals>
                    <configuration>
                        <name>isSnapshot</name>
                        <value>${project.version}</value>
                        <regex>.*-SNAPSHOT</regex>
                        <replacement>true</replacement>
                        <failIfNoMatch>false</failIfNoMatch>                            
                    </configuration>
                </execution>                    
            </executions>
        </plugin>   
        <!-- set the properties deploy.Url and deploy.Id during validation to 
        either the snapshot repository or the release repository 
        depending on the version pattern.-->            
        <plugin>
            <groupId>org.codehaus.gmaven</groupId>
            <artifactId>gmaven-plugin</artifactId>
            <version>1.5</version>
            <executions>
                <execution>
                    <phase>validate</phase>
                    <goals>
                        <goal>execute</goal>
                    </goals>
                    <configuration>
                        <source><![CDATA[
                            pom.properties['deploy.Url']=pom.properties['isSnapshot'].equals('true') ? pom.properties['deploy.repositorySnapshotUrl'] : pom.properties['deploy.repositoryUrl'];
                            pom.properties['deploy.Id']=pom.properties['isSnapshot'].equals('true') ? pom.properties['deploy.repositorySnapshotId'] : pom.properties['deploy.repositoryId'];
                        ]]></source>
                    </configuration>
                </execution>
            </executions>
        </plugin>   
        ...
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-deploy-plugin</artifactId>
            <version>3.0.0-M1</version>
            <configuration>
                <skip>true</skip>
            </configuration> 
            <executions>
                <execution>
                    <id>DeployToArtifactory</id>
                    <phase>deploy</phase>
                    <goals>
                        <goal>deploy-file</goal>
                    </goals>
                    <configuration>
                        <url>${deploy.Url}</url>
                        <repositoryId>${deploy.Id}</repositoryId>
                        <file>target/${project.build.finalName}.${project.packaging}</file>
                        <groupId>${project.groupId}</groupId>
                        <artifactId>${project.artifactId}</artifactId>
                        <version>${project.version}</version>
                        <packaging>jar</packaging>
                        <classifier>resources</classifier>
                        <pomFile>${project.build.directory}/pom/pom.xml</pomFile>
                    </configuration>
                </execution>
            </executions>                                                        
        </plugin>
    </plugins>
</build>
person Tiemo Vorschütz    schedule 02.11.2018