AWS Lambda frasco incapaz de fecho de correr após a adição de dependências de selênio em pom

Meerfall o Dewott:

Este é um erro estranho. Depois de adicionar as dependências de selênio ao pom do meu projeto maven e enviá-lo a um lambda, ele diz que não é capaz de descompactar o arquivo. No entanto depois de remover as dependências, o lambda é capaz de descompactar o arquivo apenas multa (no entanto, ele vem com uma classe não encontrada depois). Eu tentei remover as dependências, um por um, mas cada um gatilhos o erro.

Todas as ideias sobre como resolver isso?

erro de classe não encontrado

org/openqa/selenium/WebDriver: java.lang.NoClassDefFoundError
java.lang.NoClassDefFoundError: org/openqa/selenium/WebDriver

lambda não pode zip erro

Calling the invoke API action failed with this message: Lambda was not able to unzip the file

As dependências causando o problema

    <dependency>
        <groupId>org.seleniumhq.webdriver</groupId>
        <artifactId>webdriver-common</artifactId>
        <version>0.9.7376</version>
    </dependency>

    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-chrome-driver</artifactId>
        <version>3.141.59</version>
    </dependency>

    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>3.141.59</version>
    </dependency>

dependências atualizados (por Vishal)

    <dependency>
        <groupId>org.seleniumhq.webdriver</groupId>
        <artifactId>webdriver-common</artifactId>
        <version>0.9.7376</version>
    </dependency>

    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-chrome-driver</artifactId>
        <version>3.141.59</version>
    </dependency>

    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>3.141.59</version>
    </dependency>

    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-api</artifactId>
        <version>2.0rc2</version>
    </dependency>
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-remote-driver</artifactId>
        <version>3.141.59</version>
    </dependency>

    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-support</artifactId>
        <version>3.141.59</version>
    </dependency>

Configuração

 <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.6.0</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
          <encoding>UTF-8</encoding>
          <forceJavacCompilerUse>true</forceJavacCompilerUse>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>3.0.0</version>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
Jason Warner:

A sombra do plugin combina todas as dependências com o código desenvolvido e estatela-los em um JAR Uber. A desvantagem é que ele pode substituir os arquivos de recursos, e não joga bem com frascos assinados (na minha experiência, pelo menos).

Eu recomendaria se afastando do plug-in sombra, se possível.

Dito isto, se você tem que usá-lo - você está problema pode ser com a combinação dos recursos jar. Há muitos transformadores que você pode usar para resolver isso, e você vai precisar para investigar qual deles é realmente necessário. Gostaria de começar com algo parecido com isto

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>2.4.3</version>
    <configuration>
        <shadedArtifactAttached>true</shadedArtifactAttached>
        <shadedClassifierName>${executable.classifier}</shadedClassifierName>
        <filters>
            <filter>
                <artifact>*:*</artifact>
                <excludes>
                    <exclude>META-INF/*.SF</exclude>
                    <exclude>META-INF/*.DSA</exclude>
                    <exclude>META-INF/*.RSA</exclude>
                </excludes>
            </filter>
        </filters>
    </configuration>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>shade</goal>
            </goals>
            <configuration>
                <transformers>
                    <transformer
                        implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
                    <transformer
                        implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                        <mainClass>fully.qualified.ClassName</mainClass>
                    </transformer>
                </transformers>
            </configuration>
        </execution>
    </executions>
</plugin>

Você pode encontrar mais Tranformers no Apache plug-in aqui

A alternativa que eu sugiro que está a mola de arranque, que utiliza a estrutura do frasco-em-Jar com um carregador de classes personalizada para as classes de carga a partir do frasco interno (s).

Este é o método mais fácil devido a não ter a arquivos re-escrita como a abordagem Sombra plugin e ele lida com as dependências um pouco melhor.

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <version>1.3.6.RELEASE</version>
    <configuration>
        <classifier>${executable.classifier}</classifier>
        <layout>ZIP</layout>
        <mainClass>fully.qualified.ClassName</mainClass>
    </configuration>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>repackage</goal>
            </goals>
        </execution>
    </executions>
</plugin>

Sério, olhar para a configuração mais simples!

NOTA: A maior parte desse aumento veio de minhas próprias anotações - Versão números podem ser um pouco velho ...

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=311779&siteId=1
Recomendado
Clasificación