Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Les applications exécutées dans l'environnement d'exécution standard Go 1.12 (ou version ultérieure) peuvent utiliser n'importe quel package compatible avec Linux/AMD64.
App Engine a besoin de toutes les instructions d'importation de votre code Go pour spécifier des chemins absolus. Par exemple, utilisez le format suivant :
import"github.com/example/mypackage"
Utiliser les modules Go
Nous vous recommandons d'utiliser les modules Go pour gérer les dépendances de votre application Go. Vous pouvez continuer à utiliser l'ancien mode GOPATH si vous n'êtes pas prêt à migrer vers les modules Go.
À partir de la version 1.22 et ultérieure de Go:
Vous ne pouvez pas utiliser go get en dehors d'un module dans l'ancien mode GOPATH (GO111MODULE=off). Pour en savoir plus, consultez la section Outils.
Go vous recommande d'utiliser un fichier go.mod pour gérer les dépendances. Pour installer des dépendances lors du déploiement, incluez un fichier go.mod dans le même dossier que le fichier app.yaml. Pour en savoir plus sur les versions de Go et sur la gestion des dépendances pour les répertoires vendor, consultez la page GOPATH et Modules.
Lorsque vous déployez votre application, App Engine exécute la commande go build pour créer votre application et copier le comportement de Go. Pour vous assurer que votre application utilise le mode module-aware, procédez comme suit dans votre environnement de développement:
Créez le fichier go.mod de votre module dans le même répertoire que votre fichier app.yaml. App Engine recherche le répertoire actuel et les répertoires parents successifs jusqu'à ce qu'il trouve un fichier go.mod.
Si App Engine ne trouve pas de fichier go.mod, il suit le mode GOPATH.
Si vous définissez la variable d'environnement GO111MODULE, assurez-vous que sa valeur active le mode module-aware. Lorsque vous déployez votre application, App Engine vérifie la présence de GO111MODULE dans votre environnement et copie le comportement de Go.
App Engine n'applique le paramètre de la variable GO111MODULE que si vous avez inclus un fichier go.mod pour votre application.
Pour Go 1.12, ne recherchez pas le répertoire de votre application dans le dossier $GOPATH/src. Si votre application Go 1.12 se trouve dans l'arborescence de répertoires $GOPATH/src, App Engine suit le mode GOPATH même si vous avez défini un fichier go.mod pour votre application.
Pour Go 1.13 et versions ultérieures, App Engine utilise le mode module-aware par défaut, sauf si GO111MODULE remplace le paramètre par défaut ou si un fichier go.mod n'existe dans le répertoire de l'application.
Effectuer un vendoring des dépendances
Le vendoring copie les packages utilisés par votre application dans le répertoire de celle-ci au lieu de télécharger des modules depuis leurs sources pendant le processus de compilation. Go fournit la commande go build pour procéder au vendoring des packages dont votre application a besoin dans un répertoire nommé vendor dans le répertoire racine de l'application.
Dans Go 1.14 et versions ultérieures, si le répertoire racine de l'application contient un répertoire nommé vendor, la commande go build et le processus de déploiement App Engine utilisent les packages du répertoire "vendor" au lieu de télécharger des modules.
Dans Go 1.13 et versions antérieures, le vendoring n'est disponible que si vous avez configuré votre environnement pour utiliser le mode GOPATH.
Utiliser des dépendances privées
App Engine ne peut pas télécharger vos dépendances privées pendant le processus de compilation. Vous devez donc les inclure avec votre code d'application lors du déploiement.
Utilisez la directive replace dans votre fichier go.mod pour déclarer des dépendances privées. L'exemple suivant suppose que votre application se trouve dans le répertoire /myapp/ :
Accédez au répertoire de votre application :
cd/myapp
Créez un répertoire contenant vos dépendances privées :
mkdirprivate
Assurez-vous que votre dépendance privée se trouve dans le répertoire private. Une approche consiste à créer un lien symbolique :
Ne modifiez pas la manière dont vous importez et utilisez votre package privé. Votre instruction import doit se présenter comme suit:
import"private.example.com/foo"
Incluez votre dépendance privée dans votre déploiement en déployant votre application :
gcloudappdeploy
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/04/21 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Difficile à comprendre","hardToUnderstand","thumb-down"],["Informations ou exemple de code incorrects","incorrectInformationOrSampleCode","thumb-down"],["Il n'y a pas l'information/les exemples dont j'ai besoin","missingTheInformationSamplesINeed","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/04/21 (UTC)."],[[["\u003cp\u003eGo apps in App Engine must use absolute paths in import statements, such as \u003ccode\u003eimport "github.com/example/mypackage"\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eUsing Go modules is recommended for managing dependencies, and a \u003ccode\u003ego.mod\u003c/code\u003e file should be included in the same folder as \u003ccode\u003eapp.yaml\u003c/code\u003e for dependency installation during deployment.\u003c/p\u003e\n"],["\u003cp\u003eFor Go 1.22 and later, \u003ccode\u003ego get\u003c/code\u003e cannot be used outside of a module in legacy \u003ccode\u003eGOPATH\u003c/code\u003e mode, and the use of a \u003ccode\u003ego.mod\u003c/code\u003e file for dependency management is strongly encouraged.\u003c/p\u003e\n"],["\u003cp\u003eApp Engine's build process uses the \u003ccode\u003ego build\u003c/code\u003e command, matching Go's behavior, and it prioritizes \u003ccode\u003emodule-aware\u003c/code\u003e mode if a \u003ccode\u003ego.mod\u003c/code\u003e file is present, or if using Go 1.13 or later, unless \u003ccode\u003eGO111MODULE\u003c/code\u003e dictates otherwise.\u003c/p\u003e\n"],["\u003cp\u003eVendoring, or copying packages to a \u003ccode\u003evendor\u003c/code\u003e directory in your app, is supported from Go 1.14 and above. And for the use of private dependencies, you should use a \u003ccode\u003ereplace\u003c/code\u003e directive in the \u003ccode\u003ego.mod\u003c/code\u003e file, and then place those dependencies within the \u003ccode\u003eprivate\u003c/code\u003e directory of the app.\u003c/p\u003e\n"]]],[],null,["# Specify dependencies\n\nApps that run in the Go 1.12+ standard runtime can use any\nlinux/amd64-compatible package.\n\nApp Engine requires all import statements in your Go code to\nspecify absolute paths. For example, use: \n\n import \"github.com/example/mypackage\"\n\nUse Go modules\n--------------\n\nWe recommend that you use [Go modules](https://blog.golang.org/using-go-modules)\nto manage dependencies in your Go app. You can continue to use the older `GOPATH` mode\nif you aren't ready to [migrate\nto Go modules](https://blog.golang.org/migrating-to-go-modules).\n\nStarting in Go **version 1.22 and later**:\n\n- You can't use `go get` outside of a module in the legacy `GOPATH` mode\n (`GO111MODULE`=`off`). For more information, see [Tools](https://tip.golang.org/doc/go1.22#:%7E:text=enables%20this%20feature.-,Tools,-Go%20command).\n\n- Go recommends that you use a `go.mod` file for managing dependencies. To install\n dependencies during deployment, include a `go.mod` file in the same folder as\n the `app.yaml` file. For more information about Go versions, and managing\n dependencies for vendor directories, see [`GOPATH` and Modules](https://pkg.go.dev/cmd/go#hdr-GOPATH_and_Modules).\n\nWhen you deploy your app, App Engine uses the `go build` command to\nbuild your app and matches the behavior of Go itself. To ensure that\nyour app uses `module-aware` mode, do the following in your development\nenvironment:\n\n- Create your module's `go.mod` file in the same directory as your `app.yaml`\n file. App Engine searches the current directory and the successive\n parent directories until it finds a [`go.mod` file](https://golang.org/cmd/go/#hdr-Defining_a_module).\n\n If App Engine doesn't find a `go.mod` file, it follows\n `GOPATH` mode.\n- If you set the [`GO111MODULE` environment variable](https://golang.org/ref/mod#mod-commands),\n make sure that the variable's value enables\n `module-aware` mode. When you deploy your app, App Engine checks your\n environment for `GO111MODULE` and matches the behavior of Go itself.\n App Engine only applies the `GO111MODULE` variable setting if you have\n included a `go.mod` file for your app.\n\n- For Go 1.12, don't locate your app directory within the `$GOPATH/src` folder. If\n your Go 1.12 app is anywhere in the `$GOPATH/src` directory tree,\n App Engine follows `GOPATH` mode even if you've defined a `go.mod` file\n for your app.\n\n For Go 1.13 and later, App Engine uses\n [`module-aware` mode](https://golang.org/cmd/go/#hdr-Module_support)\n by default, unless `GO111MODULE` overrides the default or a `go.mod` file\n doesn't exist in the app's directory.\n\n### Vendoring dependencies\n\n**Vendoring** copies the packages your app uses into the application directory\ninstead of downloading modules from their sources during the build process. Go\nprovides the `go build` command to\n[vendor the packages your app needs](https://golang.org/cmd/go/#hdr-Modules_and_vendoring)\ninto a directory named `vendor` in your app's root directory.\n\nIn Go 1.14 and later, if your app's root directory contains a directory named\n`vendor`, the `go build` command and the App Engine\ndeployment process use the packages in the vendor directory instead of\ndownloading modules.\n\nIn Go 1.13 and earlier, vendoring is only available if you set up your\nenvironment to use [`GOPATH` mode](https://golang.org/cmd/go/#hdr-GOPATH_and_Modules).\n\n### Use private dependencies\n\nApp Engine can't download your private dependencies during the build\nprocess, so you must include the dependencies with your application code upon\ndeployment.\n\nUse the `replace` directive in your `go.mod` file to declare\nprivate dependencies. The following example assumes your app is in the `/myapp/`\ndirectory:\n\n1. Change to your app directory:\n\n cd /myapp\n\n2. Create a directory containing your private dependencies:\n\n mkdir private\n\n Make sure your private dependency is in the `private` directory. One\n approach is by creating a symlink: \n\n mkdir private/private.example.com\n ln -s /path/to/private.example.com/foo private/private.example.com/foo\n\n3. Update your `go.mod` file to use the `replace` directive to use the `private`\n directory for your dependency:\n\n go mod edit -replace=private.example.com/foo=./private/private.example.com/foo\n\n Your `go.mod` file should now look like: \n\n ### Final `go.mod` file\n\n module private.example.com/myapp\n\n require private.example.com/foo v1.2.3\n\n replace private.example.com/foo =\u003e ./private/private.example.com/foo\n\n ### Original `go.mod` file\n\n module private.example.com/myapp\n\n require private.example.com/foo v1.2.3\n\n4. Don't modify how you import and use your private package. Your `import`\n statement should look like this:\n\n import \"private.example.com/foo\"\n\n5. Include your private dependency in your deployment by deploying your app:\n\n gcloud app deploy"]]