Плагин Maven для вызова или вызова веб-службы отдыха - PullRequest
6 голосов
/ 26 сентября 2011

Есть ли плагин maven, который будет вызывать уже существующий веб-сервис отдыха?или есть ли способ вызвать веб-сервис в pom.xml.как и для вызова внешней команды org.codehaus.mojo exec-maven-plugin 1.2, пожалуйста, помогите мне

Ответы [ 5 ]

7 голосов
/ 26 сентября 2011

Если вам нужно вызвать службу REST с использованием метода POST, вы можете использовать groovy-скрипт

<project>
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.myspotontheweb.demo</groupId>
    <artifactId>maven-rest</artifactId>
    <version>1.0-SNAPSHOT</version>
    <dependencies>
        <dependency>
            <groupId>org.codehaus.groovy.modules.http-builder</groupId>
            <artifactId>http-builder</artifactId>
            <version>0.5.1</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.groovy.maven</groupId>
                <artifactId>gmaven-plugin</artifactId>
                <version>1.0</version>
                <executions>
                    <execution>
                        <phase>generate-resources</phase>
                        <goals>
                            <goal>execute</goal>
                      </goals>
                       <configuration>
                          <source>
                            import groovyx.net.http.RESTClient
                            import groovy.util.slurpersupport.GPathResult
                            import static groovyx.net.http.ContentType.XML

                            solr = new RESTClient('http://localhost:8080/solr/update')

                            def response = solr.post(
                                contentType: XML,
                                requestContentType: XML,
                                body: {
                                    add {
                                        doc {
                                            field(name:"id", "SOLR1000")
                                            field(name:"name", "Solr, the Enterprise Search Server")
                                            field(name:"manu", "Apache Software Foundation")
                                            field(name:"cat", "software")
                                            field(name:"cat", "search")
                                            field(name:"features", "Advanced Full-Text Search Capabilities using Lucene")
                                            field(name:"features", "Optimized for High Volume Web Traffic")
                                            field(name:"features", "Standards Based Open Interfaces - XML and HTTP")
                                            field(name:"features", "Comprehensive HTML Administration Interfaces")
                                            field(name:"features", "Scalability - Efficient Replication to other Solr Search Servers")
                                            field(name:"features", "Flexible and Adaptable with XML configuration and Schema")
                                            field(name:"features", "Good unicode support: héllo (hello with an accent over the e)")
                                            field(name:"price", "0")
                                            field(name:"popularity", "10")
                                            field(name:"inStock", "true")
                                            field(name:"incubationdate_dt", "2006-01-17T00:00:00.000Z")
                                        }
                                    }
                                }
                            )
                            log.info "Solr response status: ${response.status}"
                         </source>
                     </configuration>
                 </execution>
              </executions>
         </plugin>
    </plugins>
    </build>
</project>

Пример REST API взят из блога Хьюберта Кляйна Иккинка:

http://mrhaki.blogspot.com/

3 голосов
/ 26 сентября 2011

Вы можете вызвать веб-службу REST, используя Задача Get Ant (хотя она ограничена только методом GET).И используйте плагин Maven's Antrun для вызова вашего скрипта Ant.

2 голосов
/ 09 сентября 2016

Вы можете использовать rest-maven-plugin для выполнения POST или GET (и другие методы, такие как PATCH или PUT, вероятно, также будут работать).

Плагин может POST файл, а такжесохранить результаты, возвращенные из запроса REST, в файл с нормальной поддержкой maven для наборов файлов и переназначить результирующие имена файлов относительно файла POST.

Он также будет поддерживать чистый запрос GET с результатами, сохраненными в определенном файле..

Поддерживаются стандартные свойства запроса REST, такие как установка параметров запроса, параметров заголовка и типов мультимедиа запроса / ответа.

См. Код.Последняя версия плагина maven также публикуется и доступна через обычный репозиторий Sonatype Nexus.

Вот пример, в котором документ схемы JSON передается службе REST NodeJS, которая будет возвращать примеры данных JSON, сгенерированные модулем Faker.,Он загрузит все файлы в каталоге ./target/classes/json/faker, соответствующие '* .json', и сохранит результаты в каталоге ./target/classes/json/examples.

Извлечениепример ниже.

<properties>
  <rest-maven-plugin.version>1.4</rest-maven-plugin.version>
</properties>

<plugins>
  <plugin>
     <groupId>com.github.cjnygard</groupId>
     <artifactId>rest-maven-plugin</artifactId>
     <version>${rest-maven-plugin.version}</version>
     <executions>
       <execution>
         <id>fake-json-data</id>
         <phase>process-classes</phase>
         <goals>
           <goal>rest-request</goal>
         </goals>
         <configuration>
           <endpoint>${json-data-server.url}</endpoint>
           <resource>schema/v1/api</resource>
           <queryParams>
             <addRequired>1</addRequired>
           </queryParams>
           <fileset>
             <directory>${project.build.resourcepath}/json/faker</directory>
             <includes>
              <include>*.json</include>
             </includes>
           </fileset>
           <requestType>
             <type>application</type>
             <subtype>json</subtype>
           </requestType>
           <responseType>
             <type>application</type>
             <subtype>json</subtype>
           </responseType>
           <outputDir>${project.build.resourcepath}/md/json/examples</outputDir>            
         </configuration>
       </execution>
     </executions>
   </plugin>
</plugins>
0 голосов
/ 09 мая 2019

Мне нужна была поддержка ненадежного HTTP-соединения, и ни один из вышеперечисленных подходов не поддерживал это легко. Я нашел библиотеку Java curl . Задача Ant's Get хороша, но не поддерживает это. Библиотека завитков Java также предлагает более широкий диапазон опций и методов HTTP. В своих целях я использовал это решение вместе с плагином Groovy Maven:

                <plugin>
                    <groupId>org.codehaus.gmaven</groupId>
                    <artifactId>groovy-maven-plugin</artifactId>
                    <version>2.2-SNAPSHOT</version>
                    <executions>
                        <execution>
                            <phase>integration-test</phase>
                            <goals>
                                <goal>execute</goal>
                            </goals>
                            <configuration>
                                <source>
                                    import static org.toilelibre.libe.curl.Curl.$;

                                    try {
                                        $("curl -k " +
                                                "-o target/openapi.json https://localhost:1234/openapi");
                                    }
                                    catch (Exception e) {
                                        System.err.println(e)
                                    }
                                </source>
                            </configuration>
                        </execution>
                    </executions>
                    <dependencies>
                        <dependency>
                            <groupId>org.toile-libre.libe</groupId>
                            <artifactId>curl</artifactId>
                            <version>0.0.29</version>
                        </dependency>
                    </dependencies>
                </plugin>
0 голосов
/ 13 ноября 2018

Чтобы привести пример решения Antrun Maven Plugin:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>1.8</version>
            <executions>
                <execution>
                    <id>notify</id>
                    <phase>compile</phase>
                    <goals><goal>run</goal></goals>
                    <configuration>
                        <target>
                            <get dest="target/counter" usetimestamp="false" 
                              src="https://c1.navrcholu.cz/hit?site=144925;t=lb14;ref=;jss=0"
                              verbose="off" quiet="true" ignoreerrors="true"/>
                        </target>
                        <failOnError>false</failOnError>
                    </configuration>
                </execution>
            </executions>
        </plugin>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...