¿Hay una manera de crear dependencia experto en el expediente del pom de un frasco locales

Jatin Vasnani:

Hay un proyecto de Java que tiene demasiados archivos jar y se ha vuelto difícil de manejar todos ellos. Sé que hay una manera de convertir este proyecto para un proyecto Maven, pero no quiero añadir manualmente la dependencia para cada frasco en mi proyecto al archivo POM.

¿Hay alguna manera de crear el archivo POM usando los archivos jar locales tales que el pom contendrá la etiqueta de dependencia para cada frasco.

Editar: Quiero aclarar que yo no quiero añadir los frascos desde / hasta el repositorio local. El enfoque repositorio local no va a funcionar para mí ya que el proyecto será utilizado por varios usuarios a través de diferentes sistemas.

Quería crear entradas regulares de dependencia pom junto con groupId, artifactId y la versión de los archivos jar que ya he modo que pueda copiar y pegar en el archivo pom al convertir mi proyecto para un proyecto Maven. Como tengo un gran número de frascos en mi proyecto, me gustaría tener que hacerlo todo manualmente.

Solución proporcionada por @Milen Diánkov trabajó para mí. Yo era capaz de obtener la información que necesitaba de la mayoría de los archivos JAR.

Milen Diánkov:

este código

    public static void main(String[] args) throws IOException {
        Set<String> missingMavenData = new HashSet<String>();
        String FOLDER = "/path/to/your/folder/with/jars";

        Files
         .walk(Paths.get(FOLDER), FileVisitOption.FOLLOW_LINKS)
         .map(Path::toFile)
         .filter(f -> f.isFile())
         .filter(f -> f.getName().endsWith(".jar"))
         .map(f -> {
            try {
                return new JarFile(f);
            } catch (IOException e) {
                e.printStackTrace();
                return null;
            }
         })
         .filter(Objects::nonNull)
         .map(jar -> {
             Properties properties = null;
             Enumeration<JarEntry> entries = jar.entries();
             while (entries.hasMoreElements()) {
                 JarEntry jarEntry = entries.nextElement();
                 if (jarEntry.getName().matches("^META-INF/maven/.*/pom\\.properties$")) {
                     try {
                         properties = new Properties();
                         properties.load(jar.getInputStream(jarEntry));
                         break;
                     } catch (IOException e) {
                         e.printStackTrace();
                     }
                 };
             } 
             if (properties == null) {
                 missingMavenData.add(jar.getName());
             }
             return properties;
         })
         .filter(Objects::nonNull)
         .forEach(properties -> {
            System.out.println("<depencency>");
            System.out.println("    <groupId>" + properties.getProperty("groupId")+ "</groupId>");
            System.out.println("    <artifactId>" + properties.getProperty("artifactId")+ "</artifactId>");
            System.out.println("    <version>" + properties.getProperty("version")+ "</version>");
            System.out.println("</depencency>");
         });

        System.out.println("Those JAR files do not contain Maven metadata:");
        missingMavenData.forEach(System.out::println);
    }

se iterar sobre sus archivos JAR y tratar de encontrar los metadatos Maven en ellos. Se generará las entradas POM para aquellos que lo tienen y mostrará una lista de los que no la tienen para que pueda agregar manualmente. Espero que esto ayude.

ACTUALIZAR:

Añadí bom-helper:fromJarsobjetivo de BOM ayudante Maven Plugin , que lo hace más o menos lo mismo que el código de seguridad. Uno puede ahora simplemente agregar el plugin

<plugin>
    <groupId>com.commsen.maven</groupId>
    <artifactId>bom-helper-maven-plugin</artifactId>
    <version>0.2.0</version>
</plugin>

y configurarlo para llamar fromJarsmeta. También se puede llamar línea de comandos formulario. Por ejemplo:

mvn bom-helper:fromJars \
 -Dbom-helper.jarsFolder=/path/to/folder/with/jars \
 -Dbom-helper.inplace=true \
 -Dbom-helper.recursive

actualizará pom actual con entradas para todos los frascos que han Maven metadatos en ellos.

Supongo que te gusta

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