Installation eines Moduls mittels Composer ohne git Repo

Hallo zusammen,
mein Ziel ist es ein Modul mittels Composer zu installieren, wo die sources auf dem eigenen Server liegen. Eine Installation mittles git Repo bei GitLab hatte auch Probleme verursacht.
Ich habe dazu, dass Modul in den vendor Ordner des Shop gelegt, die composer.json angepasst und dann mit dem Befehl composer require modul versucht zu installieren.

composer.json Shop:

"repositories": {
    "modul": {
      "type": "artifact",
      "url": "./vendor/modulsrc"
    }
  }

composer.json Modul:

{
       "name": "modul",
       "version": "1.0.0",
....

Mir wird leider eine Fehlermeldung angezeigt beim Versuche es zu installieren, irgendwie findet der das Paket nicht:

Could not find package modul.

  Did you mean one of these?
      sly/notification-pusher
      payum/payum
      laracasts/flash
      symfony/notifier
      jolicode/jolinotif
type or paste code here

Hat irgendwer einen Hinweis, was da schief läuft?
Installationsbeschreibung hier: ZIP Modul installieren

Hi, in der Anleitung steht

./vendor/zip 

Das kannst du natürlich anders nennen, aber “zip” ist nicht das Modul, sondern ein Ordner, in dem dann die Module als ZIP liegen. Das können auch mehrere Module sein.
Soll das Modul direkt im Ordner vendor liegen, ginge das so:

"repositories": {
    "modul": {
      "type": "artifact",
      "url": "./vendor"
    }
  }

Oder auf der Ebene der Ordner source und vendor:

"repositories": {
    "modul": {
      "type": "artifact",
      "url": "./DeinOrdnertitel"
    }
  }

Alles klar, funktioniert. Mir wird dieser Fehler angezeigt:

 [Error]
  Call to undefined method Symfony\Component\Console\Question\Question::getAutocompleterCallback()

Könnte an der Composer Version liegen.

einerseits klingt das nach Composer 2.3
und andererseits kann man ein Modul auch direkt installieren, indem man sein Namespace in der composer.json hinterlegt und über die oe-console die Konfiguration installiert. Das ist aber nur dann sinnvoll, wenn man keine zusätzlichen Dependencies hat, sonst muss man erst sie manuell über composer installieren.

Darf ich fragen, warum du “artifact” anstatt “path” verwendest?

Bei uns steht häufig sowas:

    "repositories":[
        {
            "type": "path",
            "url": "project-modules/*"
        },
...
        {
            "type": "path",
            "url": "extensions/vt/*"
        },

Steht so in dieser Anleitung. Funktioniert aber auch mit ‘path’ nicht. Fehler bleibt gleich.

Update Fehlermeldung v6.4.2 - OXID Forum (oxid-esales.com)

Okay ein Downgrade der Version auf Composer 2.2.0 lässt mich das Modul installieren. :slight_smile:
Aber irgendwie ist es immer noch nicht im Backend zu finden, um es zu aktivieren.

Ist es denn im Modulordner zu finden und kannst Du es hiermit ansteuern?
vendor/bin/oe-console oe:module:install-configuration source/modules/vendor/modulename

fettes ist ans Modul anpassen.

Nein, es ist leider nicht im sources/modules Ordner zu finden.

Habe jetzt die autoload Angabe geändert und so klappt das Kopieren in den PSR-4 Ordner:

 "autoload": {
         "psr-4": {
           "Module\\": "./source/modules/yourModulePath"
         }
       },

Und dann nachträglich mit:

vendor/bin/oe-console oe:module:install-configuration source/modules/vendor/modulename

Jetzt funktioniert es. Heißt Kunde muss drei Schritte machen:

  1. Quelldatein im vendor Ordner hinterlegen
  2. composer requiere
  3. Modulinstallation mit oe-console

Einfacher funktioniert es wahrscheinlich nicht?

Normalerweise* reicht 2. also require, um das Modul zu installieren. Nachträgliche Änderungen an der metadata etc. kannst mit der Konsole einspielen.

*Hängt natürlich von einer korrekten Konfiguration (composer.json mit Path etc.) ab