¿Cómo definir las reglas de acceso para las entradas de classpath en el archivo maven pom.xml para Eclipse y M2E?

Para evitar advertencias de acceso ilegal para jfxrt.jar, cambié manualmente mi archivo classpath para incluir reglas de acceso:

Entrada de classpath deseada

<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
        <accessrules>
            <accessrule kind="accessible" pattern="javafx/**"/>
            <accessrule kind="accessible" pattern="com/sun/javafx/**"/>         
        </accessrules>
</classpathentry>

Si ejecuto mi archivo pom.xml, la etiqueta accessrule se elimina y la nueva entrada es

Entrada de classpath producida actualmente por pom.xml / M2E

<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
</classpathentry>

Esto se debe a que la información sobre las reglas de acceso no está incluida en mi archivo pom.xml. ¿Cómo puedo modificar mi archivo pom.xml para producir el archivo classpath deseado?

  • ¿Puedo hacerlo usando alguna configuración para el complemento de compilador maven?

  • ¿O tengo que usar algún complemento adicional de Maven para modificar el archivo de texto classpath?

  • ¿O no es posible abordar esto en el archivo pom.xml y tendría que escribir una solicitud de función para M2E?

Aquí hay un fragmento de mi archivo pom.xml (uso el paquete pom):

Entrada pom.xml de Curent para la fase de compilación

<!-- ### COMPILE ### phase -->
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.3</version>
    <configuration>
        <!-- specify current java version here: -->
        <source>1.8</source>
        <target>1.8</target>
    </configuration>
    <executions>
        <execution>
            <id>compile-execution</id>
            <phase>compile</phase>
            <goals>
                <goal>compile</goal>                           
            </goals>
        </execution>
        <execution>
            <id>org.treez.test-compile-execution</id>
            <phase>org.treez.test-compile</phase>
            <goals>                         
                <goal>testCompile</goal>
            </goals>
        </execution>
    </executions>       
</plugin>
Respuesta 1

Encontré una solución para reparar mi archivo .class. Se requieren dos pasos:

  1. Agregue maven-antrun-plugin a la sección #build # => # plugins # en el archivo pom.xml para reemplazar el texto en el archivo .classpath:

<plugin>                
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.8</version>
    <executions>
        <execution>
            <phase>prepare-package</phase>
            <configuration>
                <tasks>
                  <replace 
                    token= "JavaSE-1.8&#34;&#62;" 
                    value="JavaSE-1.8&#34;&#62;&#13; &#60;accessrules&#62;&#13; &#60;accessrule kind=&#34;accessible&#34; pattern=&#34;javafx/**&#34;/&#62;&#13; &#60;accessrule kind=&#34;accessible&#34; pattern=&#34;com/sun/javafx/**&#34;/&#62;&#13;&#60;/accessrules&#62;" 
                    file=".classpath"
                  > 
                  </replace>
                </tasks>
            </configuration>
            <goals>
                <goal>run</goal>
            </goals>
        </execution>
    </executions>
</plugin> 
  1. Dile a M2E que ejecute ese complemento. De lo contrario, M2E lo ignoraría. Defina una asignación de ciclo de vida en la sección #build # => # pluginManagement # del archivo pom.xml:

  <pluginManagement>
    <plugins>
        <plugin>
             <groupId>org.eclipse.m2e</groupId>
             <artifactId>lifecycle-mapping</artifactId>
             <version>1.0.0</version>
             <configuration>
                 <lifecycleMappingMetadata>
                <pluginExecutions>
                      <pluginExecution>
                          <pluginExecutionFilter>                                               
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-antrun-plugin</artifactId>
                            <versionRange>1.8</versionRange>                                            
                            <goals>
                              <goal>run</goal>
                            </goals>
                          </pluginExecutionFilter>
                          <action>
                              <execute>
                                <runOnIncremental>false</runOnIncremental>
                              </execute>
                          </action>                                  
                     </pluginExecution>
                  </pluginExecutions>
                 </lifecycleMappingMetadata>
              </configuration>
        </plugin>    
    </plugins>
</pluginManagement>     
Respuesta: 2

Me preguntaba si alguna de las bibliotecas de matrices conocidas para Java, como Colt o EJML, en realidad proporcionan una funcionalidad similar a MatLab. Por ejemplo, parece que no puedo encontrar ningún lugar en el ...

¿Cómo reemplazar el siguiente código usando Java 8 Opcionales (programación funcional)? ClassA classA = dbService.findByA (a); if (classA == null) {classA = dbService.findByB (b); } if (classA == null) {...

Quiero crear un objeto que tenga dos tipos genéricos, pero en algunos lugares se crea con un solo tipo genérico dado. En esos casos, el segundo tipo no tiene importancia, por lo que quiero poder ...

He creado 2 complementos, implementando un complemento de controlador ODA y su complemento de interfaz de usuario para la extensión BIRT a Eclipse. Mis complementos funcionan como se esperaba cuando eclipse inicia otra aplicación de eclipse ...