如果发布到Hackage,我的应用程序中有一部分会更好。我仍然不知道它究竟会是什么样子,因此我需要在处理我的应用程序时对其进行许多更改。
在我的项目中创建一个模块并在那里进行迭代非常容易,但是我想将它放在自己的项目中,以便它可以拥有自己的依赖项。
如何在开发过程中让我的项目依赖于这个单独的包?它应该允许快速迭代。这是我到目前为止所做的:
# stack.yaml
packages:
- '.'
- location: ../amqp-worker
# my-application.cabal
library
build-depends:
base >= 4.7 && < 5
, amqp-worker
但是我在构建时遇到错误:
$ stack build
cra-reporting-0.1.0.0: build
-- While building package cra-reporting-0.1.0.0 using:
/Users/seanhess/.stack/setup-exe-cache/x86_64-osx/setup-Simple-Cabal-1.24.0.0-ghc-8.0.1 --builddir=.stack-work/dist/x86_64-osx/Cabal-1.24.0.0 build lib:cra-reporting exe:cra-reporting-exe --ghc-options " -ddump-hi -ddump-to-file"
Process exited with code: ExitFailure 1
Logs have been written to: /Users/seanhess/projects/simple/cra-reporting/.stack-work/logs/cra-reporting-0.1.0.0.log
Preprocessing library cra-reporting-0.1.0.0...
[8 of 8] Compiling Simple.DataX.Worker ( src/Simple/DataX/Worker.hs, .stack-work/dist/x86_64-osx/Cabal-1.24.0.0/build/Simple/DataX/Worker.o )
/Users/seanhess/projects/simple/cra-reporting/src/Simple/DataX/Worker.hs:6:1: error:
Failed to load interface for ‘Network.Worker’
Perhaps you meant
Network.Socket (needs flag -package-key network-2.6.3.1)
Network.Wreq (from wreq-0.4.1.0)
Network.Socks5 (needs flag -package-key socks-0.5.5)
Use -v to see a list of the files searched for.
如果我从项目文件夹中运行stack build
,外部包似乎可以正常运行。
两个项目都针对lts-7.3
答案 0 :(得分:1)
以上示例应该有效。我从头开始尝试这个,它运行正常。该错误是由于某种构建工件造成的。
如果它再次发生,我会在子项目中删除.stack-work并重建。